/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

#include <stdio.h>
#include <stdlib.h>

#if defined(__QK_USER__)
#include <catamount/dclock.h>
#endif

#include "fftw.h"

/**************** import/export using file ***************/

static void file_emitter(char c, void *data)
{
     putc(c,(FILE *) data);
}

void fftw_export_wisdom_to_file(FILE *output_file)
{
     if (output_file)
	  fftw_export_wisdom(file_emitter,(void *) output_file);
}

static int file_get_input(void *data)
{
     return getc((FILE *) data);
}

fftw_status fftw_import_wisdom_from_file(FILE *input_file)
{
     if (!input_file)
	  return FFTW_FAILURE;
     return fftw_import_wisdom(file_get_input, (void *) input_file);
}

/*************** import/export using string **************/

static void emission_counter(char c, void *data)
{
     int *counter = (int *) data;

     ++*counter;
}

static void string_emitter(char c, void *data)
{
     char **output_string = (char **) data;

     *((*output_string)++) = c;
     **output_string = 0;
}

char *fftw_export_wisdom_to_string(void)
{
     int string_length = 0;
     char *s, *s2;

     fftw_export_wisdom(emission_counter, (void *) &string_length);

     s = fftw_malloc(sizeof(char) * (string_length + 1));
     if (!s)
	  return 0;
     s2 = s;

     fftw_export_wisdom(string_emitter, (void *) &s2);

     if (s + string_length != s2)
	  fftw_die("Unexpected output string length!");

     return s;
}

static int string_get_input(void *data)
{
     char **input_string = (char **) data;

     if (**input_string)
	  return *((*input_string)++);
     else
	  return 0;
}

fftw_status fftw_import_wisdom_from_string(const char *input_string)
{
     const char *s = input_string;

     if (!input_string)
	  return FFTW_FAILURE;
     return fftw_import_wisdom(string_get_input, (void *) &s);
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* config.c -- this file contains all the codelets the system knows about */

/* $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

#if defined FFTW_USING_CILK
#include <cilk.h>
#include <cilk-compat.h>
#endif

#include "fftw.h"

/* the signature is the same as the size, for now */
#define NOTW_CODELET(x)  { x, x, fftw_no_twiddle_##x }
#define NOTWI_CODELET(x)  { x, x, fftwi_no_twiddle_##x }

extern notw_codelet fftw_no_twiddle_1;
extern notw_codelet fftw_no_twiddle_2;
extern notw_codelet fftw_no_twiddle_3;
extern notw_codelet fftw_no_twiddle_4;
extern notw_codelet fftw_no_twiddle_5;
extern notw_codelet fftw_no_twiddle_6;
extern notw_codelet fftw_no_twiddle_7;
extern notw_codelet fftw_no_twiddle_8;
extern notw_codelet fftw_no_twiddle_9;
extern notw_codelet fftw_no_twiddle_10;
extern notw_codelet fftw_no_twiddle_11;
extern notw_codelet fftw_no_twiddle_12;
extern notw_codelet fftw_no_twiddle_13;
extern notw_codelet fftw_no_twiddle_14;
extern notw_codelet fftw_no_twiddle_15;
extern notw_codelet fftw_no_twiddle_16;
extern notw_codelet fftw_no_twiddle_32;
extern notw_codelet fftw_no_twiddle_64;

extern notw_codelet fftwi_no_twiddle_1;
extern notw_codelet fftwi_no_twiddle_2;
extern notw_codelet fftwi_no_twiddle_3;
extern notw_codelet fftwi_no_twiddle_4;
extern notw_codelet fftwi_no_twiddle_5;
extern notw_codelet fftwi_no_twiddle_6;
extern notw_codelet fftwi_no_twiddle_7;
extern notw_codelet fftwi_no_twiddle_8;
extern notw_codelet fftwi_no_twiddle_9;
extern notw_codelet fftwi_no_twiddle_10;
extern notw_codelet fftwi_no_twiddle_11;
extern notw_codelet fftwi_no_twiddle_12;
extern notw_codelet fftwi_no_twiddle_13;
extern notw_codelet fftwi_no_twiddle_14;
extern notw_codelet fftwi_no_twiddle_15;
extern notw_codelet fftwi_no_twiddle_16;
extern notw_codelet fftwi_no_twiddle_32;
extern notw_codelet fftwi_no_twiddle_64;

config_notw fftw_config_notw[] =
{
     NOTW_CODELET(1),
     NOTW_CODELET(2),
     NOTW_CODELET(3),
     NOTW_CODELET(4),
     NOTW_CODELET(5),
     NOTW_CODELET(6),
     NOTW_CODELET(7),
     NOTW_CODELET(8),
     NOTW_CODELET(9),
     NOTW_CODELET(10),
     NOTW_CODELET(11),
     NOTW_CODELET(12),
     NOTW_CODELET(13),
     NOTW_CODELET(14),
     NOTW_CODELET(15),
     NOTW_CODELET(16),
     NOTW_CODELET(32),
     NOTW_CODELET(64),
     {0, 0, (notw_codelet *) 0}
};

config_notw fftwi_config_notw[] =
{
     NOTWI_CODELET(1),
     NOTWI_CODELET(2),
     NOTWI_CODELET(3),
     NOTWI_CODELET(4),
     NOTWI_CODELET(5),
     NOTWI_CODELET(6),
     NOTWI_CODELET(7),
     NOTWI_CODELET(8),
     NOTWI_CODELET(9),
     NOTWI_CODELET(10),
     NOTWI_CODELET(11),
     NOTWI_CODELET(12),
     NOTWI_CODELET(13),
     NOTWI_CODELET(14),
     NOTWI_CODELET(15),
     NOTWI_CODELET(16),
     NOTWI_CODELET(32),
     NOTWI_CODELET(64),
     {0, 0, (notw_codelet *) 0}
};

/* the signature is the same as the size, for now */
#define TWIDDLE_CODELET(x)  { x, x, fftw_twiddle_##x }
#define TWIDDLEI_CODELET(x)  { x, x, fftwi_twiddle_##x }

extern twiddle_codelet fftw_twiddle_2;
extern twiddle_codelet fftw_twiddle_3;
extern twiddle_codelet fftw_twiddle_4;
extern twiddle_codelet fftw_twiddle_5;
extern twiddle_codelet fftw_twiddle_6;
extern twiddle_codelet fftw_twiddle_7;
extern twiddle_codelet fftw_twiddle_8;
extern twiddle_codelet fftw_twiddle_9;
extern twiddle_codelet fftw_twiddle_10;
extern twiddle_codelet fftw_twiddle_16;
extern twiddle_codelet fftw_twiddle_32;
extern twiddle_codelet fftw_twiddle_64;

extern twiddle_codelet fftwi_twiddle_2;
extern twiddle_codelet fftwi_twiddle_3;
extern twiddle_codelet fftwi_twiddle_4;
extern twiddle_codelet fftwi_twiddle_5;
extern twiddle_codelet fftwi_twiddle_6;
extern twiddle_codelet fftwi_twiddle_7;
extern twiddle_codelet fftwi_twiddle_8;
extern twiddle_codelet fftwi_twiddle_9;
extern twiddle_codelet fftwi_twiddle_10;
extern twiddle_codelet fftwi_twiddle_16;
extern twiddle_codelet fftwi_twiddle_32;
extern twiddle_codelet fftwi_twiddle_64;

config_twiddle fftw_config_twiddle[] =
{
     TWIDDLE_CODELET(2),
     TWIDDLE_CODELET(3),
     TWIDDLE_CODELET(4),
     TWIDDLE_CODELET(5),
     TWIDDLE_CODELET(6),
     TWIDDLE_CODELET(7),
     TWIDDLE_CODELET(8),
     TWIDDLE_CODELET(9),
     TWIDDLE_CODELET(10),
     TWIDDLE_CODELET(16),
     TWIDDLE_CODELET(32),
     TWIDDLE_CODELET(64),
     {0, 0, (twiddle_codelet *) 0}
};

config_twiddle fftwi_config_twiddle[] =
{
     TWIDDLEI_CODELET(2),
     TWIDDLEI_CODELET(3),
     TWIDDLEI_CODELET(4),
     TWIDDLEI_CODELET(5),
     TWIDDLEI_CODELET(6),
     TWIDDLEI_CODELET(7),
     TWIDDLEI_CODELET(8),
     TWIDDLEI_CODELET(9),
     TWIDDLEI_CODELET(10),
     TWIDDLEI_CODELET(16),
     TWIDDLEI_CODELET(32),
     TWIDDLEI_CODELET(64),
     {0, 0, (twiddle_codelet *) 0}
};
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 *
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 *
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *
 */

/*
 * executor.c -- execute the fft
 */

/* $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */
#include "fftw.h"
#include <stdio.h>
#include <stdlib.h>

char *fftw_version = "FFTW V1.1 ($Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $)";

/*
 * This function is called in other files, so we cannot declare
 * it as static. 
 */

void fftw_strided_copy(int n, FFTW_COMPLEX *in, int ostride,
		       FFTW_COMPLEX *out)
{
     int i;
     FFTW_REAL r0, r1, i0, i1;
     FFTW_REAL r2, r3, i2, i3;

     i = 0;
     if (n & 3)
	  for (; i < (n & 3); ++i) {
	       out[i * ostride] = in[i];
	  }
     for (; i < n; i += 4) {
	  r0 = c_re(in[i]);
	  i0 = c_im(in[i]);
	  r1 = c_re(in[i + 1]);
	  i1 = c_im(in[i + 1]);
	  r2 = c_re(in[i + 2]);
	  i2 = c_im(in[i + 2]);
	  r3 = c_re(in[i + 3]);
	  i3 = c_im(in[i + 3]);
	  c_re(out[i * ostride]) = r0;
	  c_im(out[i * ostride]) = i0;
	  c_re(out[(i + 1) * ostride]) = r1;
	  c_im(out[(i + 1) * ostride]) = i1;
	  c_re(out[(i + 2) * ostride]) = r2;
	  c_im(out[(i + 2) * ostride]) = i2;
	  c_re(out[(i + 3) * ostride]) = r3;
	  c_im(out[(i + 3) * ostride]) = i3;
     }
}

/*
 * Do *not* declare simple executor as static--we need to call it
 * from executor_cilk.cilk...also, preface its name with "fftw_"
 * to avoid any possible name collisions. 
 */
void fftw_executor_simple(int n, const FFTW_COMPLEX *in,
			  FFTW_COMPLEX *out,
			  fftw_plan_node *p,
			  int istride,
			  int ostride)
{
     switch (p->type) {
	 case FFTW_NOTW:
	      (p->nodeu.notw.codelet) (in, out, istride, ostride);
	      break;

	 case FFTW_TWIDDLE:
	      {
		   int r = p->nodeu.twiddle.size;
		   int m = n / r;
		   int i;
		   twiddle_codelet *codelet;
		   FFTW_COMPLEX *W;

		   for (i = 0; i < r; ++i) {
			fftw_executor_simple(m, in + i * istride,
					     out + i * (m * ostride),
					     p->nodeu.twiddle.recurse,
					     istride * r, ostride);
		   }

		   codelet = p->nodeu.twiddle.codelet;
		   W = p->nodeu.twiddle.tw->twarray;
		   codelet(out, W, m * ostride, m, ostride);

		   break;
	      }

	 case FFTW_GENERIC:
	      {
		   int r = p->nodeu.generic.size;
		   int m = n / r;
		   int i;
		   generic_codelet *codelet;
		   FFTW_COMPLEX *W;

		   for (i = 0; i < r; ++i) {
			fftw_executor_simple(m, in + i * istride,
					     out + i * (m * ostride),
					     p->nodeu.generic.recurse,
					     istride * r, ostride);
		   }

		   codelet = p->nodeu.generic.codelet;
		   W = p->nodeu.generic.tw->twarray;
		   codelet(out, W, m, r, n, ostride);

		   break;
	      }

	 default:
	      fftw_die("BUG in executor: illegal plan\n");
	      break;
     }
}

static void executor_simple_inplace(int n, FFTW_COMPLEX *in,
				    FFTW_COMPLEX *out,
				    fftw_plan_node *p,
				    int istride)
{
     switch (p->type) {
	 case FFTW_NOTW:
	      (p->nodeu.notw.codelet) (in, in, istride, istride);
	      break;

	 default:
	      {
		   FFTW_COMPLEX *tmp;

		   if (out)
			tmp = out;
		   else
			tmp = (FFTW_COMPLEX *)
			    fftw_malloc(n * sizeof(FFTW_COMPLEX));

		   fftw_executor_simple(n, in, tmp, p, istride, 1);
		   fftw_strided_copy(n, tmp, istride, in);

		   if (!out)
			fftw_free(tmp);
	      }
     }
}

static void executor_many(int n, const FFTW_COMPLEX *in,
			  FFTW_COMPLEX *out,
			  fftw_plan_node *p,
			  int istride,
			  int ostride,
			  int howmany, int idist, int odist)
{
     switch (p->type) {
	 case FFTW_NOTW:
	      {
		   int s;
		   notw_codelet *codelet = p->nodeu.notw.codelet;
		   for (s = 0; s < howmany; ++s)
			codelet(in + s * idist,
				out + s * odist,
				istride, ostride);
		   break;
	      }

	 default:
	      {
		   int s;
		   for (s = 0; s < howmany; ++s) {
			fftw_executor_simple(n, in + s * idist,
					     out + s * odist,
					     p, istride, ostride);
		   }
	      }
     }
}

static void executor_many_inplace(int n, FFTW_COMPLEX *in,
				  FFTW_COMPLEX *out,
				  fftw_plan_node *p,
				  int istride,
				  int howmany, int idist)
{
     switch (p->type) {
	 case FFTW_NOTW:
	      {
		   int s;
		   notw_codelet *codelet = p->nodeu.notw.codelet;
		   for (s = 0; s < howmany; ++s)
			codelet(in + s * idist,
				in + s * idist,
				istride, istride);
		   break;
	      }

	 default:
	      {
		   int s;
		   FFTW_COMPLEX *tmp;
		   if (out)
			tmp = out;
		   else
			tmp = (FFTW_COMPLEX *)
			    fftw_malloc(n * sizeof(FFTW_COMPLEX));

		   for (s = 0; s < howmany; ++s) {
			fftw_executor_simple(n,
					     in + s * idist,
					     tmp,
					     p, istride, 1);
			fftw_strided_copy(n, tmp, istride, in + s * idist);
		   }

		   if (!out)
			fftw_free(tmp);
	      }
     }
}

/* user interface */
void fftw(fftw_plan plan, int howmany, FFTW_COMPLEX *in, int istride,
	  int idist, FFTW_COMPLEX *out, int ostride, int odist)
{
     int n = plan->n;

     if (plan->flags & FFTW_IN_PLACE) {
	  if (howmany == 1) {
	       executor_simple_inplace(n, in, out, plan->root, istride);
	  } else {
	       executor_many_inplace(n, in, out, plan->root, istride, howmany,
				     idist);
	  }
     } else {
	  if (howmany == 1) {
	       fftw_executor_simple(n, in, out, plan->root, istride, ostride);
	  } else {
	       executor_many(n, in, out, plan->root, istride, ostride,
			     howmany, idist, odist);
	  }
     }
}

/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

#include <stdlib.h>

#include "fftw.h"

/* Prototypes for functions used internally in this file: */

static void fftw2d_out_of_place_aux(fftwnd_plan p, int howmany,
				FFTW_COMPLEX *in, int istride, int idist,
			      FFTW_COMPLEX *out, int ostride, int odist);
static void fftw3d_out_of_place_aux(fftwnd_plan p, int howmany,
				FFTW_COMPLEX *in, int istride, int idist,
			      FFTW_COMPLEX *out, int ostride, int odist);
static void fftwnd_out_of_place_aux(fftwnd_plan p, int howmany,
				FFTW_COMPLEX *in, int istride, int idist,
			      FFTW_COMPLEX *out, int ostride, int odist);

static void fftw2d_in_place_aux(fftwnd_plan p, int howmany,
			   FFTW_COMPLEX *in_out, int istride, int idist);
static void fftw3d_in_place_aux(fftwnd_plan p, int howmany,
			   FFTW_COMPLEX *in_out, int istride, int idist);
static void fftwnd_in_place_aux(fftwnd_plan p, int howmany,
			   FFTW_COMPLEX *in_out, int istride, int idist);

/*********** Initializing the FFTWND Auxiliary Data **********/

fftwnd_plan fftw2d_create_plan(int nx, int ny, fftw_direction dir, int flags)
{
     int n[2];

     n[0] = nx;
     n[1] = ny;

     return fftwnd_create_plan(2, n, dir, flags);
}

fftwnd_plan fftw3d_create_plan(int nx, int ny, int nz, fftw_direction dir,
			       int flags)
{
     int n[3];

     n[0] = nx;
     n[1] = ny;
     n[2] = nz;

     return fftwnd_create_plan(3, n, dir, flags);
}

fftwnd_plan fftwnd_create_plan(int rank, const int *n, 
			       fftw_direction dir, int flags)
{
     int i, j, max_dim = 0;
     fftwnd_plan p;
     int cur_flags;

     if (rank < 0)
	  return 0;

     for (i = 0; i < rank; ++i)
	  if (n[i] <= 0)
	       return 0;

     p = (fftwnd_plan) fftw_malloc(sizeof(fftwnd_aux_data));
     p->n = 0;
     p->n_before = 0;
     p->n_after = 0;
     p->plans = 0;
     p->work = 0;

     p->rank = rank;
     p->is_in_place = flags & FFTW_IN_PLACE;

     if (rank == 0)
	  return 0;

     p->n = (int *) fftw_malloc(sizeof(int) * rank);
     p->n_before = (int *) fftw_malloc(sizeof(int) * rank);
     p->n_after = (int *) fftw_malloc(sizeof(int) * rank);
     p->plans = (fftw_plan *) fftw_malloc(rank * sizeof(fftw_plan));
     p->n_before[0] = 1;
     p->n_after[rank - 1] = 1;

     for (i = 0; i < rank; ++i) {
	  p->n[i] = n[i];

	  if (i) {
	       p->n_before[i] = p->n_before[i - 1] * n[i - 1];
	       p->n_after[rank - 1 - i] = p->n_after[rank - i] * n[rank - i];
	  }
	  if (i < rank - 1 || (flags & FFTW_IN_PLACE)) {
	       /* fft's except the last dimension are always in-place */
	       cur_flags = flags | FFTW_IN_PLACE;
	       for (j = i - 1; j >= 0 && n[i] != n[j]; --j);

	       if (n[i] > max_dim)
		    max_dim = n[i];
	  } else {
	       cur_flags = flags;
	       /* we must create a separate plan for the last dimension */
	       j = -1;
	  }

	  if (j >= 0) {
	       /* 
	        * If a plan already exists for this size
	        * array, reuse it: 
	        */
	       p->plans[i] = p->plans[j];
	  } else {
	       /* generate a new plan: */
	       p->plans[i] = fftw_create_plan(n[i], dir, cur_flags);
	       if (!p->plans[i]) {
		    fftwnd_destroy_plan(p);
		    return 0;
	       }
	  }
     }

     /* Create work array for in-place FFTs: */
     if (max_dim > 0)
	  p->work = (FFTW_COMPLEX *)
	      fftw_malloc(sizeof(FFTW_COMPLEX) * max_dim);

     return p;
}

/************* Freeing the FFTWND Auxiliary Data *************/

void fftwnd_destroy_plan(fftwnd_plan plan)
{
     if (plan) {
	  if (plan->plans) {
	       int i, j;

	       for (i = 0; i < plan->rank; ++i) {
		    for (j = i - 1;
			 j >= 0 && plan->plans[i] != plan->plans[j];
			 --j);
		    if (j < 0 && plan->plans[i])
			 fftw_destroy_plan(plan->plans[i]);
	       }
	       fftw_free(plan->plans);
	  }
	  if (plan->n)
	       fftw_free(plan->n);

	  if (plan->n_before)
	       fftw_free(plan->n_before);

	  if (plan->n_after)
	       fftw_free(plan->n_after);

	  if (plan->work)
	       fftw_free(plan->work);

	  fftw_free(plan);
     }
}

/************** Computing the N-Dimensional FFT **************/

void fftwnd(fftwnd_plan plan, int howmany,
	    FFTW_COMPLEX *in, int istride, int idist,
	    FFTW_COMPLEX *out, int ostride, int odist)
{
     if (plan->is_in_place)	/* fft is in-place */
	  switch (plan->rank) {
	      case 0:
		   break;
	      case 1:
		   fftw(plan->plans[0], howmany, in, istride, idist,
			plan->work, 1, 0);
		   break;
	      case 2:
		   fftw2d_in_place_aux(plan, howmany, in, istride, idist);
		   break;
	      case 3:
		   fftw3d_in_place_aux(plan, howmany, in, istride, idist);
		   break;
	      default:
		   fftwnd_in_place_aux(plan, howmany, in, istride, idist);
     } else {
	  if (in == out || out == 0)
	       fftw_die("Illegal attempt to perform in-place FFT!\n");
	  switch (plan->rank) {
	      case 0:
		   break;
	      case 1:
		   fftw(plan->plans[0], howmany, in, istride, idist,
			out, ostride, odist);
		   break;
	      case 2:
		   fftw2d_out_of_place_aux(plan, howmany, in, istride,
					   idist, out, ostride, odist);
		   break;
	      case 3:
		   fftw3d_out_of_place_aux(plan, howmany, in, istride,
					   idist, out, ostride, odist);
		   break;
	      default:
		   fftwnd_out_of_place_aux(plan, howmany, in, istride,
					   idist, out, ostride, odist);
	  }
     }
}

static void fftw2d_out_of_place_aux(fftwnd_plan p, int howmany,
				FFTW_COMPLEX *in, int istride, int idist,
			       FFTW_COMPLEX *out, int ostride, int odist)
{
     int fft_iter;
     fftw_plan p0, p1;
     int n0, n1;

     p0 = p->plans[0];
     p1 = p->plans[1];
     n0 = p->n[0];
     n1 = p->n[1];

     for (fft_iter = 0; fft_iter < howmany; ++fft_iter) {
	  /* FFT y dimension (out-of-place): */
	  fftw(p1, n0,
	       in + fft_iter * idist, istride, n1 * istride,
	       out + fft_iter * odist, ostride, n1 * ostride);
	  /* FFT x dimension (in-place): */
	  fftw(p0, n1,
	       out + fft_iter * odist, n1 * ostride, ostride,
	       p->work, 1, 1);
     }
}

static void fftw3d_out_of_place_aux(fftwnd_plan p, int howmany,
				FFTW_COMPLEX *in, int istride, int idist,
			       FFTW_COMPLEX *out, int ostride, int odist)
{
     int fft_iter;
     int i;
     fftw_plan p0, p1, p2;
     int n0, n1, n2;

     p0 = p->plans[0];
     p1 = p->plans[1];
     p2 = p->plans[2];
     n0 = p->n[0];
     n1 = p->n[1];
     n2 = p->n[2];

     for (fft_iter = 0; fft_iter < howmany; ++fft_iter) {
	  /* FFT z dimension (out-of-place): */
	  fftw(p2, n0 * n1,
	       in + fft_iter * idist, istride, n2 * istride,
	       out + fft_iter * odist, ostride, n2 * ostride);
	  /* FFT y dimension (in-place): */
	  for (i = 0; i < n0; ++i)
	       fftw(p1, n2,
		    out + fft_iter * odist + i * n1 * n2 * ostride,
		    n2 * ostride, ostride, p->work, 1, 0);
	  /* FFT x dimension (in-place): */
	  fftw(p0, n1 * n2,
	       out + fft_iter * odist, n1 * n2 * ostride, ostride,
	       p->work, 1, 0);
     }
}

static void fftwnd_out_of_place_aux(fftwnd_plan p, int howmany,
				FFTW_COMPLEX *in, int istride, int idist,
			       FFTW_COMPLEX *out, int ostride, int odist)
{
     int fft_iter;
     int j, i;

     /* Do FFT for rank > 3: */

     for (fft_iter = 0; fft_iter < howmany; ++fft_iter) {
	  /* do last dimension (out-of-place): */
	  fftw(p->plans[p->rank - 1], p->n_before[p->rank - 1],
	     in + fft_iter * idist, istride, p->n[p->rank - 1] * istride,
	   out + fft_iter * odist, ostride, p->n[p->rank - 1] * ostride);

	  /* do first dimension (in-place): */
	  fftw(p->plans[0], p->n_after[0],
	       out + fft_iter * odist, p->n_after[0] * ostride, ostride,
	       p->work, 1, 0);

	  /* do other dimensions (in-place): */
	  for (j = 1; j < p->rank - 1; ++j)
	       for (i = 0; i < p->n_before[j]; ++i)
		    fftw(p->plans[j], p->n_after[j],
			 out + fft_iter * odist + i * ostride * p->n[j] *
			 p->n_after[j], p->n_after[j] * ostride,
			 ostride, p->work, 1, 0);
     }
}

static void fftw2d_in_place_aux(fftwnd_plan p, int howmany,
			    FFTW_COMPLEX *in_out, int istride, int idist)
{
     int fft_iter;
     fftw_plan p0, p1;
     int n0, n1;

     p0 = p->plans[0];
     p1 = p->plans[1];
     n0 = p->n[0];
     n1 = p->n[1];

     for (fft_iter = 0; fft_iter < howmany; ++fft_iter) {
	  /* FFT y dimension: */
	  fftw(p1, n0,
	       in_out + fft_iter * idist, istride, istride * n1,
	       p->work, 1, 0);
	  /* FFT x dimension: */
	  fftw(p0, n1,
	       in_out + fft_iter * idist, istride * n1, istride,
	       p->work, 1, 0);
     }
}

static void fftw3d_in_place_aux(fftwnd_plan p, int howmany,
			    FFTW_COMPLEX *in_out, int istride, int idist)
{
     int i;
     int fft_iter;
     fftw_plan p0, p1, p2;
     int n0, n1, n2;

     p0 = p->plans[0];
     p1 = p->plans[1];
     p2 = p->plans[2];
     n0 = p->n[0];
     n1 = p->n[1];
     n2 = p->n[2];

     for (fft_iter = 0; fft_iter < howmany; ++fft_iter) {
	  /* FFT z dimension: */
	  fftw(p2, n0 * n1,
	       in_out + fft_iter * idist, istride, n2 * istride,
	       p->work, 1, 0);
	  /* FFT y dimension: */
	  for (i = 0; i < n0; ++i)
	       fftw(p1, n2,
		    in_out + fft_iter * idist + i * n1 *
		    n2 * istride, n2 * istride, istride, p->work, 1, 0);
	  /* FFT x dimension: */
	  fftw(p0, n1 * n2,
	       in_out + fft_iter * idist, n1 * n2 * istride, istride,
	       p->work, 1, 0);
     }
}

static void fftwnd_in_place_aux(fftwnd_plan p, int howmany,
			    FFTW_COMPLEX *in_out, int istride, int idist)
/* Do FFT for rank > 3: */
{
     int fft_iter;
     int j, i;

     for (fft_iter = 0; fft_iter < howmany; ++fft_iter) {
	  /* do last dimension: */
	  fftw(p->plans[p->rank - 1], p->n_before[p->rank - 1],
	  in_out + fft_iter * idist, istride, p->n[p->rank - 1] * istride,
	       p->work, 1, 0);

	  /* do first dimension: */
	  fftw(p->plans[0], p->n_after[0],
	     in_out + fft_iter * idist, p->n_after[0] * istride, istride,
	       p->work, 1, 0);

	  /* do other dimensions: */
	  for (j = 1; j < p->rank - 1; ++j)
	       for (i = 0; i < p->n_before[j]; ++i)
		    fftw(p->plans[j], p->n_after[j],
		      in_out + fft_iter * idist + i * istride * p->n[j] *
			 p->n_after[j], p->n_after[j] * istride, istride,
			 p->work, 1, 0);
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 0 FP additions and 0 FP multiplications */

void fftw_no_twiddle_1(const FFTW_COMPLEX *in, FFTW_COMPLEX *out, int istride, int ostride)
{
     FFTW_REAL tre0_0_0;
     FFTW_REAL tim0_0_0;
     tre0_0_0 = c_re(in[0]);
     tim0_0_0 = c_im(in[0]);
     c_re(out[0]) = tre0_0_0;
     c_im(out[0]) = tim0_0_0;
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 108 FP additions and 32 FP multiplications */

void fftw_no_twiddle_10(const FFTW_COMPLEX *in, FFTW_COMPLEX *out, int istride, int ostride)
{
     FFTW_REAL tre0_0_0;
     FFTW_REAL tim0_0_0;
     FFTW_REAL tre0_0_1;
     FFTW_REAL tim0_0_1;
     FFTW_REAL tre0_0_2;
     FFTW_REAL tim0_0_2;
     FFTW_REAL tre0_0_3;
     FFTW_REAL tim0_0_3;
     FFTW_REAL tre0_0_4;
     FFTW_REAL tim0_0_4;
     FFTW_REAL tre0_1_0;
     FFTW_REAL tim0_1_0;
     FFTW_REAL tre0_1_1;
     FFTW_REAL tim0_1_1;
     FFTW_REAL tre0_1_2;
     FFTW_REAL tim0_1_2;
     FFTW_REAL tre0_1_3;
     FFTW_REAL tim0_1_3;
     FFTW_REAL tre0_1_4;
     FFTW_REAL tim0_1_4;
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  tre1_0_0 = c_re(in[0]);
	  tim1_0_0 = c_im(in[0]);
	  tre1_1_0 = c_re(in[5 * istride]);
	  tim1_1_0 = c_im(in[5 * istride]);
	  tre0_0_0 = tre1_0_0 + tre1_1_0;
	  tim0_0_0 = tim1_0_0 + tim1_1_0;
	  tre0_1_0 = tre1_0_0 - tre1_1_0;
	  tim0_1_0 = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  tre1_0_0 = c_re(in[2 * istride]);
	  tim1_0_0 = c_im(in[2 * istride]);
	  tre1_1_0 = c_re(in[7 * istride]);
	  tim1_1_0 = c_im(in[7 * istride]);
	  tre0_0_1 = tre1_0_0 + tre1_1_0;
	  tim0_0_1 = tim1_0_0 + tim1_1_0;
	  tre0_1_1 = tre1_0_0 - tre1_1_0;
	  tim0_1_1 = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  tre1_0_0 = c_re(in[4 * istride]);
	  tim1_0_0 = c_im(in[4 * istride]);
	  tre1_1_0 = c_re(in[9 * istride]);
	  tim1_1_0 = c_im(in[9 * istride]);
	  tre0_0_2 = tre1_0_0 + tre1_1_0;
	  tim0_0_2 = tim1_0_0 + tim1_1_0;
	  tre0_1_2 = tre1_0_0 - tre1_1_0;
	  tim0_1_2 = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  tre1_0_0 = c_re(in[6 * istride]);
	  tim1_0_0 = c_im(in[6 * istride]);
	  tre1_1_0 = c_re(in[istride]);
	  tim1_1_0 = c_im(in[istride]);
	  tre0_0_3 = tre1_0_0 + tre1_1_0;
	  tim0_0_3 = tim1_0_0 + tim1_1_0;
	  tre0_1_3 = tre1_0_0 - tre1_1_0;
	  tim0_1_3 = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  tre1_0_0 = c_re(in[8 * istride]);
	  tim1_0_0 = c_im(in[8 * istride]);
	  tre1_1_0 = c_re(in[3 * istride]);
	  tim1_1_0 = c_im(in[3 * istride]);
	  tre0_0_4 = tre1_0_0 + tre1_1_0;
	  tim0_0_4 = tim1_0_0 + tim1_1_0;
	  tre0_1_4 = tre1_0_0 - tre1_1_0;
	  tim0_1_4 = tim1_0_0 - tim1_1_0;
     }
     c_re(out[0]) = tre0_0_0 + tre0_0_1 + tre0_0_2 + tre0_0_3 + tre0_0_4;
     c_im(out[0]) = tim0_0_0 + tim0_0_1 + tim0_0_2 + tim0_0_3 + tim0_0_4;
     {
	  FFTW_REAL tre2_0_0;
	  FFTW_REAL tre2_1_0;
	  tre2_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K309016994) * (tre0_0_1 + tre0_0_4)) - (((FFTW_REAL) FFTW_K809016994) * (tre0_0_2 + tre0_0_3));
	  tre2_1_0 = (((FFTW_REAL) FFTW_K951056516) * (tim0_0_1 - tim0_0_4)) + (((FFTW_REAL) FFTW_K587785252) * (tim0_0_2 - tim0_0_3));
	  c_re(out[6 * ostride]) = tre2_0_0 + tre2_1_0;
	  c_re(out[4 * ostride]) = tre2_0_0 - tre2_1_0;
     }
     {
	  FFTW_REAL tim2_0_0;
	  FFTW_REAL tim2_1_0;
	  tim2_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K309016994) * (tim0_0_1 + tim0_0_4)) - (((FFTW_REAL) FFTW_K809016994) * (tim0_0_2 + tim0_0_3));
	  tim2_1_0 = (((FFTW_REAL) FFTW_K951056516) * (tre0_0_4 - tre0_0_1)) + (((FFTW_REAL) FFTW_K587785252) * (tre0_0_3 - tre0_0_2));
	  c_im(out[6 * ostride]) = tim2_0_0 + tim2_1_0;
	  c_im(out[4 * ostride]) = tim2_0_0 - tim2_1_0;
     }
     {
	  FFTW_REAL tre2_0_0;
	  FFTW_REAL tre2_1_0;
	  tre2_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K309016994) * (tre0_0_2 + tre0_0_3)) - (((FFTW_REAL) FFTW_K809016994) * (tre0_0_1 + tre0_0_4));
	  tre2_1_0 = (((FFTW_REAL) FFTW_K587785252) * (tim0_0_1 - tim0_0_4)) + (((FFTW_REAL) FFTW_K951056516) * (tim0_0_3 - tim0_0_2));
	  c_re(out[2 * ostride]) = tre2_0_0 + tre2_1_0;
	  c_re(out[8 * ostride]) = tre2_0_0 - tre2_1_0;
     }
     {
	  FFTW_REAL tim2_0_0;
	  FFTW_REAL tim2_1_0;
	  tim2_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K309016994) * (tim0_0_2 + tim0_0_3)) - (((FFTW_REAL) FFTW_K809016994) * (tim0_0_1 + tim0_0_4));
	  tim2_1_0 = (((FFTW_REAL) FFTW_K587785252) * (tre0_0_4 - tre0_0_1)) + (((FFTW_REAL) FFTW_K951056516) * (tre0_0_2 - tre0_0_3));
	  c_im(out[2 * ostride]) = tim2_0_0 + tim2_1_0;
	  c_im(out[8 * ostride]) = tim2_0_0 - tim2_1_0;
     }
     c_re(out[5 * ostride]) = tre0_1_0 + tre0_1_1 + tre0_1_2 + tre0_1_3 + tre0_1_4;
     c_im(out[5 * ostride]) = tim0_1_0 + tim0_1_1 + tim0_1_2 + tim0_1_3 + tim0_1_4;
     {
	  FFTW_REAL tre2_0_0;
	  FFTW_REAL tre2_1_0;
	  tre2_0_0 = tre0_1_0 + (((FFTW_REAL) FFTW_K309016994) * (tre0_1_1 + tre0_1_4)) - (((FFTW_REAL) FFTW_K809016994) * (tre0_1_2 + tre0_1_3));
	  tre2_1_0 = (((FFTW_REAL) FFTW_K951056516) * (tim0_1_1 - tim0_1_4)) + (((FFTW_REAL) FFTW_K587785252) * (tim0_1_2 - tim0_1_3));
	  c_re(out[ostride]) = tre2_0_0 + tre2_1_0;
	  c_re(out[9 * ostride]) = tre2_0_0 - tre2_1_0;
     }
     {
	  FFTW_REAL tim2_0_0;
	  FFTW_REAL tim2_1_0;
	  tim2_0_0 = tim0_1_0 + (((FFTW_REAL) FFTW_K309016994) * (tim0_1_1 + tim0_1_4)) - (((FFTW_REAL) FFTW_K809016994) * (tim0_1_2 + tim0_1_3));
	  tim2_1_0 = (((FFTW_REAL) FFTW_K951056516) * (tre0_1_4 - tre0_1_1)) + (((FFTW_REAL) FFTW_K587785252) * (tre0_1_3 - tre0_1_2));
	  c_im(out[ostride]) = tim2_0_0 + tim2_1_0;
	  c_im(out[9 * ostride]) = tim2_0_0 - tim2_1_0;
     }
     {
	  FFTW_REAL tre2_0_0;
	  FFTW_REAL tre2_1_0;
	  tre2_0_0 = tre0_1_0 + (((FFTW_REAL) FFTW_K309016994) * (tre0_1_2 + tre0_1_3)) - (((FFTW_REAL) FFTW_K809016994) * (tre0_1_1 + tre0_1_4));
	  tre2_1_0 = (((FFTW_REAL) FFTW_K587785252) * (tim0_1_1 - tim0_1_4)) + (((FFTW_REAL) FFTW_K951056516) * (tim0_1_3 - tim0_1_2));
	  c_re(out[7 * ostride]) = tre2_0_0 + tre2_1_0;
	  c_re(out[3 * ostride]) = tre2_0_0 - tre2_1_0;
     }
     {
	  FFTW_REAL tim2_0_0;
	  FFTW_REAL tim2_1_0;
	  tim2_0_0 = tim0_1_0 + (((FFTW_REAL) FFTW_K309016994) * (tim0_1_2 + tim0_1_3)) - (((FFTW_REAL) FFTW_K809016994) * (tim0_1_1 + tim0_1_4));
	  tim2_1_0 = (((FFTW_REAL) FFTW_K587785252) * (tre0_1_4 - tre0_1_1)) + (((FFTW_REAL) FFTW_K951056516) * (tre0_1_2 - tre0_1_3));
	  c_im(out[7 * ostride]) = tim2_0_0 + tim2_1_0;
	  c_im(out[3 * ostride]) = tim2_0_0 - tim2_1_0;
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 230 FP additions and 100 FP multiplications */

void fftw_no_twiddle_11(const FFTW_COMPLEX *in, FFTW_COMPLEX *out, int istride, int ostride)
{
     FFTW_REAL tre0_0_0;
     FFTW_REAL tim0_0_0;
     FFTW_REAL tre0_1_0;
     FFTW_REAL tim0_1_0;
     FFTW_REAL tre0_2_0;
     FFTW_REAL tim0_2_0;
     FFTW_REAL tre0_3_0;
     FFTW_REAL tim0_3_0;
     FFTW_REAL tre0_4_0;
     FFTW_REAL tim0_4_0;
     FFTW_REAL tre0_5_0;
     FFTW_REAL tim0_5_0;
     FFTW_REAL tre0_6_0;
     FFTW_REAL tim0_6_0;
     FFTW_REAL tre0_7_0;
     FFTW_REAL tim0_7_0;
     FFTW_REAL tre0_8_0;
     FFTW_REAL tim0_8_0;
     FFTW_REAL tre0_9_0;
     FFTW_REAL tim0_9_0;
     FFTW_REAL tre0_10_0;
     FFTW_REAL tim0_10_0;
     tre0_0_0 = c_re(in[0]);
     tim0_0_0 = c_im(in[0]);
     tre0_1_0 = c_re(in[istride]);
     tim0_1_0 = c_im(in[istride]);
     tre0_2_0 = c_re(in[2 * istride]);
     tim0_2_0 = c_im(in[2 * istride]);
     tre0_3_0 = c_re(in[3 * istride]);
     tim0_3_0 = c_im(in[3 * istride]);
     tre0_4_0 = c_re(in[4 * istride]);
     tim0_4_0 = c_im(in[4 * istride]);
     tre0_5_0 = c_re(in[5 * istride]);
     tim0_5_0 = c_im(in[5 * istride]);
     tre0_6_0 = c_re(in[6 * istride]);
     tim0_6_0 = c_im(in[6 * istride]);
     tre0_7_0 = c_re(in[7 * istride]);
     tim0_7_0 = c_im(in[7 * istride]);
     tre0_8_0 = c_re(in[8 * istride]);
     tim0_8_0 = c_im(in[8 * istride]);
     tre0_9_0 = c_re(in[9 * istride]);
     tim0_9_0 = c_im(in[9 * istride]);
     tre0_10_0 = c_re(in[10 * istride]);
     tim0_10_0 = c_im(in[10 * istride]);
     c_re(out[0]) = tre0_0_0 + tre0_1_0 + tre0_2_0 + tre0_3_0 + tre0_4_0 + tre0_5_0 + tre0_6_0 + tre0_7_0 + tre0_8_0 + tre0_9_0 + tre0_10_0;
     c_im(out[0]) = tim0_0_0 + tim0_1_0 + tim0_2_0 + tim0_3_0 + tim0_4_0 + tim0_5_0 + tim0_6_0 + tim0_7_0 + tim0_8_0 + tim0_9_0 + tim0_10_0;
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tre1_1_0;
	  tre1_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K841253532) * (tre0_1_0 + tre0_10_0)) + (((FFTW_REAL) FFTW_K415415013) * (tre0_2_0 + tre0_9_0)) - (((FFTW_REAL) FFTW_K959492973) * (tre0_5_0 + tre0_6_0)) - (((FFTW_REAL) FFTW_K654860733) * (tre0_4_0 + tre0_7_0)) - (((FFTW_REAL) FFTW_K142314838) * (tre0_3_0 + tre0_8_0));
	  tre1_1_0 = (((FFTW_REAL) FFTW_K540640817) * (tim0_1_0 - tim0_10_0)) + (((FFTW_REAL) FFTW_K909631995) * (tim0_2_0 - tim0_9_0)) + (((FFTW_REAL) FFTW_K989821441) * (tim0_3_0 - tim0_8_0)) + (((FFTW_REAL) FFTW_K755749574) * (tim0_4_0 - tim0_7_0)) + (((FFTW_REAL) FFTW_K281732556) * (tim0_5_0 - tim0_6_0));
	  c_re(out[ostride]) = tre1_0_0 + tre1_1_0;
	  c_re(out[10 * ostride]) = tre1_0_0 - tre1_1_0;
     }
     {
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tim1_1_0;
	  tim1_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K841253532) * (tim0_1_0 + tim0_10_0)) + (((FFTW_REAL) FFTW_K415415013) * (tim0_2_0 + tim0_9_0)) - (((FFTW_REAL) FFTW_K959492973) * (tim0_5_0 + tim0_6_0)) - (((FFTW_REAL) FFTW_K654860733) * (tim0_4_0 + tim0_7_0)) - (((FFTW_REAL) FFTW_K142314838) * (tim0_3_0 + tim0_8_0));
	  tim1_1_0 = (((FFTW_REAL) FFTW_K540640817) * (tre0_10_0 - tre0_1_0)) + (((FFTW_REAL) FFTW_K909631995) * (tre0_9_0 - tre0_2_0)) + (((FFTW_REAL) FFTW_K989821441) * (tre0_8_0 - tre0_3_0)) + (((FFTW_REAL) FFTW_K755749574) * (tre0_7_0 - tre0_4_0)) + (((FFTW_REAL) FFTW_K281732556) * (tre0_6_0 - tre0_5_0));
	  c_im(out[ostride]) = tim1_0_0 + tim1_1_0;
	  c_im(out[10 * ostride]) = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tre1_1_0;
	  tre1_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K415415013) * (tre0_1_0 + tre0_10_0)) + (((FFTW_REAL) FFTW_K841253532) * (tre0_5_0 + tre0_6_0)) - (((FFTW_REAL) FFTW_K142314838) * (tre0_4_0 + tre0_7_0)) - (((FFTW_REAL) FFTW_K959492973) * (tre0_3_0 + tre0_8_0)) - (((FFTW_REAL) FFTW_K654860733) * (tre0_2_0 + tre0_9_0));
	  tre1_1_0 = (((FFTW_REAL) FFTW_K909631995) * (tim0_1_0 - tim0_10_0)) + (((FFTW_REAL) FFTW_K755749574) * (tim0_2_0 - tim0_9_0)) + (((FFTW_REAL) FFTW_K281732556) * (tim0_8_0 - tim0_3_0)) + (((FFTW_REAL) FFTW_K989821441) * (tim0_7_0 - tim0_4_0)) + (((FFTW_REAL) FFTW_K540640817) * (tim0_6_0 - tim0_5_0));
	  c_re(out[2 * ostride]) = tre1_0_0 + tre1_1_0;
	  c_re(out[9 * ostride]) = tre1_0_0 - tre1_1_0;
     }
     {
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tim1_1_0;
	  tim1_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K415415013) * (tim0_1_0 + tim0_10_0)) + (((FFTW_REAL) FFTW_K841253532) * (tim0_5_0 + tim0_6_0)) - (((FFTW_REAL) FFTW_K142314838) * (tim0_4_0 + tim0_7_0)) - (((FFTW_REAL) FFTW_K959492973) * (tim0_3_0 + tim0_8_0)) - (((FFTW_REAL) FFTW_K654860733) * (tim0_2_0 + tim0_9_0));
	  tim1_1_0 = (((FFTW_REAL) FFTW_K909631995) * (tre0_10_0 - tre0_1_0)) + (((FFTW_REAL) FFTW_K755749574) * (tre0_9_0 - tre0_2_0)) + (((FFTW_REAL) FFTW_K281732556) * (tre0_3_0 - tre0_8_0)) + (((FFTW_REAL) FFTW_K989821441) * (tre0_4_0 - tre0_7_0)) + (((FFTW_REAL) FFTW_K540640817) * (tre0_5_0 - tre0_6_0));
	  c_im(out[2 * ostride]) = tim1_0_0 + tim1_1_0;
	  c_im(out[9 * ostride]) = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tre1_1_0;
	  tre1_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K415415013) * (tre0_3_0 + tre0_8_0)) + (((FFTW_REAL) FFTW_K841253532) * (tre0_4_0 + tre0_7_0)) - (((FFTW_REAL) FFTW_K654860733) * (tre0_5_0 + tre0_6_0)) - (((FFTW_REAL) FFTW_K959492973) * (tre0_2_0 + tre0_9_0)) - (((FFTW_REAL) FFTW_K142314838) * (tre0_1_0 + tre0_10_0));
	  tre1_1_0 = (((FFTW_REAL) FFTW_K989821441) * (tim0_1_0 - tim0_10_0)) + (((FFTW_REAL) FFTW_K281732556) * (tim0_9_0 - tim0_2_0)) + (((FFTW_REAL) FFTW_K909631995) * (tim0_8_0 - tim0_3_0)) + (((FFTW_REAL) FFTW_K540640817) * (tim0_4_0 - tim0_7_0)) + (((FFTW_REAL) FFTW_K755749574) * (tim0_5_0 - tim0_6_0));
	  c_re(out[3 * ostride]) = tre1_0_0 + tre1_1_0;
	  c_re(out[8 * ostride]) = tre1_0_0 - tre1_1_0;
     }
     {
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tim1_1_0;
	  tim1_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K415415013) * (tim0_3_0 + tim0_8_0)) + (((FFTW_REAL) FFTW_K841253532) * (tim0_4_0 + tim0_7_0)) - (((FFTW_REAL) FFTW_K654860733) * (tim0_5_0 + tim0_6_0)) - (((FFTW_REAL) FFTW_K959492973) * (tim0_2_0 + tim0_9_0)) - (((FFTW_REAL) FFTW_K142314838) * (tim0_1_0 + tim0_10_0));
	  tim1_1_0 = (((FFTW_REAL) FFTW_K989821441) * (tre0_10_0 - tre0_1_0)) + (((FFTW_REAL) FFTW_K281732556) * (tre0_2_0 - tre0_9_0)) + (((FFTW_REAL) FFTW_K909631995) * (tre0_3_0 - tre0_8_0)) + (((FFTW_REAL) FFTW_K540640817) * (tre0_7_0 - tre0_4_0)) + (((FFTW_REAL) FFTW_K755749574) * (tre0_6_0 - tre0_5_0));
	  c_im(out[3 * ostride]) = tim1_0_0 + tim1_1_0;
	  c_im(out[8 * ostride]) = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tre1_1_0;
	  tre1_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K841253532) * (tre0_3_0 + tre0_8_0)) + (((FFTW_REAL) FFTW_K415415013) * (tre0_5_0 + tre0_6_0)) - (((FFTW_REAL) FFTW_K959492973) * (tre0_4_0 + tre0_7_0)) - (((FFTW_REAL) FFTW_K142314838) * (tre0_2_0 + tre0_9_0)) - (((FFTW_REAL) FFTW_K654860733) * (tre0_1_0 + tre0_10_0));
	  tre1_1_0 = (((FFTW_REAL) FFTW_K755749574) * (tim0_1_0 - tim0_10_0)) + (((FFTW_REAL) FFTW_K989821441) * (tim0_9_0 - tim0_2_0)) + (((FFTW_REAL) FFTW_K540640817) * (tim0_3_0 - tim0_8_0)) + (((FFTW_REAL) FFTW_K281732556) * (tim0_4_0 - tim0_7_0)) + (((FFTW_REAL) FFTW_K909631995) * (tim0_6_0 - tim0_5_0));
	  c_re(out[4 * ostride]) = tre1_0_0 + tre1_1_0;
	  c_re(out[7 * ostride]) = tre1_0_0 - tre1_1_0;
     }
     {
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tim1_1_0;
	  tim1_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K841253532) * (tim0_3_0 + tim0_8_0)) + (((FFTW_REAL) FFTW_K415415013) * (tim0_5_0 + tim0_6_0)) - (((FFTW_REAL) FFTW_K959492973) * (tim0_4_0 + tim0_7_0)) - (((FFTW_REAL) FFTW_K142314838) * (tim0_2_0 + tim0_9_0)) - (((FFTW_REAL) FFTW_K654860733) * (tim0_1_0 + tim0_10_0));
	  tim1_1_0 = (((FFTW_REAL) FFTW_K755749574) * (tre0_10_0 - tre0_1_0)) + (((FFTW_REAL) FFTW_K989821441) * (tre0_2_0 - tre0_9_0)) + (((FFTW_REAL) FFTW_K540640817) * (tre0_8_0 - tre0_3_0)) + (((FFTW_REAL) FFTW_K281732556) * (tre0_7_0 - tre0_4_0)) + (((FFTW_REAL) FFTW_K909631995) * (tre0_5_0 - tre0_6_0));
	  c_im(out[4 * ostride]) = tim1_0_0 + tim1_1_0;
	  c_im(out[7 * ostride]) = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tre1_1_0;
	  tre1_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K841253532) * (tre0_2_0 + tre0_9_0)) + (((FFTW_REAL) FFTW_K415415013) * (tre0_4_0 + tre0_7_0)) - (((FFTW_REAL) FFTW_K142314838) * (tre0_5_0 + tre0_6_0)) - (((FFTW_REAL) FFTW_K654860733) * (tre0_3_0 + tre0_8_0)) - (((FFTW_REAL) FFTW_K959492973) * (tre0_1_0 + tre0_10_0));
	  tre1_1_0 = (((FFTW_REAL) FFTW_K281732556) * (tim0_1_0 - tim0_10_0)) + (((FFTW_REAL) FFTW_K540640817) * (tim0_9_0 - tim0_2_0)) + (((FFTW_REAL) FFTW_K755749574) * (tim0_3_0 - tim0_8_0)) + (((FFTW_REAL) FFTW_K909631995) * (tim0_7_0 - tim0_4_0)) + (((FFTW_REAL) FFTW_K989821441) * (tim0_5_0 - tim0_6_0));
	  c_re(out[5 * ostride]) = tre1_0_0 + tre1_1_0;
	  c_re(out[6 * ostride]) = tre1_0_0 - tre1_1_0;
     }
     {
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tim1_1_0;
	  tim1_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K841253532) * (tim0_2_0 + tim0_9_0)) + (((FFTW_REAL) FFTW_K415415013) * (tim0_4_0 + tim0_7_0)) - (((FFTW_REAL) FFTW_K142314838) * (tim0_5_0 + tim0_6_0)) - (((FFTW_REAL) FFTW_K654860733) * (tim0_3_0 + tim0_8_0)) - (((FFTW_REAL) FFTW_K959492973) * (tim0_1_0 + tim0_10_0));
	  tim1_1_0 = (((FFTW_REAL) FFTW_K281732556) * (tre0_10_0 - tre0_1_0)) + (((FFTW_REAL) FFTW_K540640817) * (tre0_2_0 - tre0_9_0)) + (((FFTW_REAL) FFTW_K755749574) * (tre0_8_0 - tre0_3_0)) + (((FFTW_REAL) FFTW_K909631995) * (tre0_4_0 - tre0_7_0)) + (((FFTW_REAL) FFTW_K989821441) * (tre0_6_0 - tre0_5_0));
	  c_im(out[5 * ostride]) = tim1_0_0 + tim1_1_0;
	  c_im(out[6 * ostride]) = tim1_0_0 - tim1_1_0;
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 104 FP additions and 16 FP multiplications */

void fftw_no_twiddle_12(const FFTW_COMPLEX *in, FFTW_COMPLEX *out, int istride, int ostride)
{
     FFTW_REAL tre0_0_0;
     FFTW_REAL tim0_0_0;
     FFTW_REAL tre0_0_1;
     FFTW_REAL tim0_0_1;
     FFTW_REAL tre0_0_2;
     FFTW_REAL tim0_0_2;
     FFTW_REAL tre0_0_3;
     FFTW_REAL tim0_0_3;
     FFTW_REAL tre0_1_0;
     FFTW_REAL tim0_1_0;
     FFTW_REAL tre0_1_1;
     FFTW_REAL tim0_1_1;
     FFTW_REAL tre0_1_2;
     FFTW_REAL tim0_1_2;
     FFTW_REAL tre0_1_3;
     FFTW_REAL tim0_1_3;
     FFTW_REAL tre0_2_0;
     FFTW_REAL tim0_2_0;
     FFTW_REAL tre0_2_1;
     FFTW_REAL tim0_2_1;
     FFTW_REAL tre0_2_2;
     FFTW_REAL tim0_2_2;
     FFTW_REAL tre0_2_3;
     FFTW_REAL tim0_2_3;
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_2_0;
	  FFTW_REAL tim1_2_0;
	  tre1_0_0 = c_re(in[0]);
	  tim1_0_0 = c_im(in[0]);
	  tre1_1_0 = c_re(in[4 * istride]);
	  tim1_1_0 = c_im(in[4 * istride]);
	  tre1_2_0 = c_re(in[8 * istride]);
	  tim1_2_0 = c_im(in[8 * istride]);
	  tre0_0_0 = tre1_0_0 + tre1_1_0 + tre1_2_0;
	  tim0_0_0 = tim1_0_0 + tim1_1_0 + tim1_2_0;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tre2_1_0;
	       tre2_0_0 = tre1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tre1_1_0 + tre1_2_0));
	       tre2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tim1_1_0 - tim1_2_0);
	       tre0_1_0 = tre2_0_0 + tre2_1_0;
	       tre0_2_0 = tre2_0_0 - tre2_1_0;
	  }
	  {
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tim2_1_0;
	       tim2_0_0 = tim1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tim1_1_0 + tim1_2_0));
	       tim2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tre1_2_0 - tre1_1_0);
	       tim0_1_0 = tim2_0_0 + tim2_1_0;
	       tim0_2_0 = tim2_0_0 - tim2_1_0;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_2_0;
	  FFTW_REAL tim1_2_0;
	  tre1_0_0 = c_re(in[3 * istride]);
	  tim1_0_0 = c_im(in[3 * istride]);
	  tre1_1_0 = c_re(in[7 * istride]);
	  tim1_1_0 = c_im(in[7 * istride]);
	  tre1_2_0 = c_re(in[11 * istride]);
	  tim1_2_0 = c_im(in[11 * istride]);
	  tre0_0_1 = tre1_0_0 + tre1_1_0 + tre1_2_0;
	  tim0_0_1 = tim1_0_0 + tim1_1_0 + tim1_2_0;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tre2_1_0;
	       tre2_0_0 = tre1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tre1_1_0 + tre1_2_0));
	       tre2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tim1_1_0 - tim1_2_0);
	       tre0_1_1 = tre2_0_0 + tre2_1_0;
	       tre0_2_1 = tre2_0_0 - tre2_1_0;
	  }
	  {
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tim2_1_0;
	       tim2_0_0 = tim1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tim1_1_0 + tim1_2_0));
	       tim2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tre1_2_0 - tre1_1_0);
	       tim0_1_1 = tim2_0_0 + tim2_1_0;
	       tim0_2_1 = tim2_0_0 - tim2_1_0;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_2_0;
	  FFTW_REAL tim1_2_0;
	  tre1_0_0 = c_re(in[6 * istride]);
	  tim1_0_0 = c_im(in[6 * istride]);
	  tre1_1_0 = c_re(in[10 * istride]);
	  tim1_1_0 = c_im(in[10 * istride]);
	  tre1_2_0 = c_re(in[2 * istride]);
	  tim1_2_0 = c_im(in[2 * istride]);
	  tre0_0_2 = tre1_0_0 + tre1_1_0 + tre1_2_0;
	  tim0_0_2 = tim1_0_0 + tim1_1_0 + tim1_2_0;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tre2_1_0;
	       tre2_0_0 = tre1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tre1_1_0 + tre1_2_0));
	       tre2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tim1_1_0 - tim1_2_0);
	       tre0_1_2 = tre2_0_0 + tre2_1_0;
	       tre0_2_2 = tre2_0_0 - tre2_1_0;
	  }
	  {
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tim2_1_0;
	       tim2_0_0 = tim1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tim1_1_0 + tim1_2_0));
	       tim2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tre1_2_0 - tre1_1_0);
	       tim0_1_2 = tim2_0_0 + tim2_1_0;
	       tim0_2_2 = tim2_0_0 - tim2_1_0;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_2_0;
	  FFTW_REAL tim1_2_0;
	  tre1_0_0 = c_re(in[9 * istride]);
	  tim1_0_0 = c_im(in[9 * istride]);
	  tre1_1_0 = c_re(in[istride]);
	  tim1_1_0 = c_im(in[istride]);
	  tre1_2_0 = c_re(in[5 * istride]);
	  tim1_2_0 = c_im(in[5 * istride]);
	  tre0_0_3 = tre1_0_0 + tre1_1_0 + tre1_2_0;
	  tim0_0_3 = tim1_0_0 + tim1_1_0 + tim1_2_0;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tre2_1_0;
	       tre2_0_0 = tre1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tre1_1_0 + tre1_2_0));
	       tre2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tim1_1_0 - tim1_2_0);
	       tre0_1_3 = tre2_0_0 + tre2_1_0;
	       tre0_2_3 = tre2_0_0 - tre2_1_0;
	  }
	  {
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tim2_1_0;
	       tim2_0_0 = tim1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tim1_1_0 + tim1_2_0));
	       tim2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tre1_2_0 - tre1_1_0);
	       tim0_1_3 = tim2_0_0 + tim2_1_0;
	       tim0_2_3 = tim2_0_0 - tim2_1_0;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  tre1_0_0 = tre0_0_0 + tre0_0_2;
	  tim1_0_0 = tim0_0_0 + tim0_0_2;
	  tre1_1_0 = tre0_0_0 - tre0_0_2;
	  tim1_1_0 = tim0_0_0 - tim0_0_2;
	  tre1_0_1 = tre0_0_1 + tre0_0_3;
	  tim1_0_1 = tim0_0_1 + tim0_0_3;
	  tre1_1_1 = tre0_0_1 - tre0_0_3;
	  tim1_1_1 = tim0_0_1 - tim0_0_3;
	  c_re(out[0]) = tre1_0_0 + tre1_0_1;
	  c_im(out[0]) = tim1_0_0 + tim1_0_1;
	  c_re(out[6 * ostride]) = tre1_0_0 - tre1_0_1;
	  c_im(out[6 * ostride]) = tim1_0_0 - tim1_0_1;
	  c_re(out[9 * ostride]) = tre1_1_0 + tim1_1_1;
	  c_im(out[9 * ostride]) = tim1_1_0 - tre1_1_1;
	  c_re(out[3 * ostride]) = tre1_1_0 - tim1_1_1;
	  c_im(out[3 * ostride]) = tim1_1_0 + tre1_1_1;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  tre1_0_0 = tre0_1_0 + tre0_1_2;
	  tim1_0_0 = tim0_1_0 + tim0_1_2;
	  tre1_1_0 = tre0_1_0 - tre0_1_2;
	  tim1_1_0 = tim0_1_0 - tim0_1_2;
	  tre1_0_1 = tre0_1_1 + tre0_1_3;
	  tim1_0_1 = tim0_1_1 + tim0_1_3;
	  tre1_1_1 = tre0_1_1 - tre0_1_3;
	  tim1_1_1 = tim0_1_1 - tim0_1_3;
	  c_re(out[4 * ostride]) = tre1_0_0 + tre1_0_1;
	  c_im(out[4 * ostride]) = tim1_0_0 + tim1_0_1;
	  c_re(out[10 * ostride]) = tre1_0_0 - tre1_0_1;
	  c_im(out[10 * ostride]) = tim1_0_0 - tim1_0_1;
	  c_re(out[ostride]) = tre1_1_0 + tim1_1_1;
	  c_im(out[ostride]) = tim1_1_0 - tre1_1_1;
	  c_re(out[7 * ostride]) = tre1_1_0 - tim1_1_1;
	  c_im(out[7 * ostride]) = tim1_1_0 + tre1_1_1;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  tre1_0_0 = tre0_2_0 + tre0_2_2;
	  tim1_0_0 = tim0_2_0 + tim0_2_2;
	  tre1_1_0 = tre0_2_0 - tre0_2_2;
	  tim1_1_0 = tim0_2_0 - tim0_2_2;
	  tre1_0_1 = tre0_2_1 + tre0_2_3;
	  tim1_0_1 = tim0_2_1 + tim0_2_3;
	  tre1_1_1 = tre0_2_1 - tre0_2_3;
	  tim1_1_1 = tim0_2_1 - tim0_2_3;
	  c_re(out[8 * ostride]) = tre1_0_0 + tre1_0_1;
	  c_im(out[8 * ostride]) = tim1_0_0 + tim1_0_1;
	  c_re(out[2 * ostride]) = tre1_0_0 - tre1_0_1;
	  c_im(out[2 * ostride]) = tim1_0_0 - tim1_0_1;
	  c_re(out[5 * ostride]) = tre1_1_0 + tim1_1_1;
	  c_im(out[5 * ostride]) = tim1_1_0 - tre1_1_1;
	  c_re(out[11 * ostride]) = tre1_1_0 - tim1_1_1;
	  c_im(out[11 * ostride]) = tim1_1_0 + tre1_1_1;
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 324 FP additions and 144 FP multiplications */

void fftw_no_twiddle_13(const FFTW_COMPLEX *in, FFTW_COMPLEX *out, int istride, int ostride)
{
     FFTW_REAL tre0_0_0;
     FFTW_REAL tim0_0_0;
     FFTW_REAL tre0_1_0;
     FFTW_REAL tim0_1_0;
     FFTW_REAL tre0_2_0;
     FFTW_REAL tim0_2_0;
     FFTW_REAL tre0_3_0;
     FFTW_REAL tim0_3_0;
     FFTW_REAL tre0_4_0;
     FFTW_REAL tim0_4_0;
     FFTW_REAL tre0_5_0;
     FFTW_REAL tim0_5_0;
     FFTW_REAL tre0_6_0;
     FFTW_REAL tim0_6_0;
     FFTW_REAL tre0_7_0;
     FFTW_REAL tim0_7_0;
     FFTW_REAL tre0_8_0;
     FFTW_REAL tim0_8_0;
     FFTW_REAL tre0_9_0;
     FFTW_REAL tim0_9_0;
     FFTW_REAL tre0_10_0;
     FFTW_REAL tim0_10_0;
     FFTW_REAL tre0_11_0;
     FFTW_REAL tim0_11_0;
     FFTW_REAL tre0_12_0;
     FFTW_REAL tim0_12_0;
     tre0_0_0 = c_re(in[0]);
     tim0_0_0 = c_im(in[0]);
     tre0_1_0 = c_re(in[istride]);
     tim0_1_0 = c_im(in[istride]);
     tre0_2_0 = c_re(in[2 * istride]);
     tim0_2_0 = c_im(in[2 * istride]);
     tre0_3_0 = c_re(in[3 * istride]);
     tim0_3_0 = c_im(in[3 * istride]);
     tre0_4_0 = c_re(in[4 * istride]);
     tim0_4_0 = c_im(in[4 * istride]);
     tre0_5_0 = c_re(in[5 * istride]);
     tim0_5_0 = c_im(in[5 * istride]);
     tre0_6_0 = c_re(in[6 * istride]);
     tim0_6_0 = c_im(in[6 * istride]);
     tre0_7_0 = c_re(in[7 * istride]);
     tim0_7_0 = c_im(in[7 * istride]);
     tre0_8_0 = c_re(in[8 * istride]);
     tim0_8_0 = c_im(in[8 * istride]);
     tre0_9_0 = c_re(in[9 * istride]);
     tim0_9_0 = c_im(in[9 * istride]);
     tre0_10_0 = c_re(in[10 * istride]);
     tim0_10_0 = c_im(in[10 * istride]);
     tre0_11_0 = c_re(in[11 * istride]);
     tim0_11_0 = c_im(in[11 * istride]);
     tre0_12_0 = c_re(in[12 * istride]);
     tim0_12_0 = c_im(in[12 * istride]);
     c_re(out[0]) = tre0_0_0 + tre0_1_0 + tre0_2_0 + tre0_3_0 + tre0_4_0 + tre0_5_0 + tre0_6_0 + tre0_7_0 + tre0_8_0 + tre0_9_0 + tre0_10_0 + tre0_11_0 + tre0_12_0;
     c_im(out[0]) = tim0_0_0 + tim0_1_0 + tim0_2_0 + tim0_3_0 + tim0_4_0 + tim0_5_0 + tim0_6_0 + tim0_7_0 + tim0_8_0 + tim0_9_0 + tim0_10_0 + tim0_11_0 + tim0_12_0;
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tre1_1_0;
	  tre1_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K885456025) * (tre0_1_0 + tre0_12_0)) + (((FFTW_REAL) FFTW_K568064746) * (tre0_2_0 + tre0_11_0)) + (((FFTW_REAL) FFTW_K120536680) * (tre0_3_0 + tre0_10_0)) - (((FFTW_REAL) FFTW_K970941817) * (tre0_6_0 + tre0_7_0)) - (((FFTW_REAL) FFTW_K748510748) * (tre0_5_0 + tre0_8_0)) - (((FFTW_REAL) FFTW_K354604887) * (tre0_4_0 + tre0_9_0));
	  tre1_1_0 = (((FFTW_REAL) FFTW_K464723172) * (tim0_1_0 - tim0_12_0)) + (((FFTW_REAL) FFTW_K822983865) * (tim0_2_0 - tim0_11_0)) + (((FFTW_REAL) FFTW_K992708874) * (tim0_3_0 - tim0_10_0)) + (((FFTW_REAL) FFTW_K935016242) * (tim0_4_0 - tim0_9_0)) + (((FFTW_REAL) FFTW_K663122658) * (tim0_5_0 - tim0_8_0)) + (((FFTW_REAL) FFTW_K239315664) * (tim0_6_0 - tim0_7_0));
	  c_re(out[ostride]) = tre1_0_0 + tre1_1_0;
	  c_re(out[12 * ostride]) = tre1_0_0 - tre1_1_0;
     }
     {
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tim1_1_0;
	  tim1_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K885456025) * (tim0_1_0 + tim0_12_0)) + (((FFTW_REAL) FFTW_K568064746) * (tim0_2_0 + tim0_11_0)) + (((FFTW_REAL) FFTW_K120536680) * (tim0_3_0 + tim0_10_0)) - (((FFTW_REAL) FFTW_K970941817) * (tim0_6_0 + tim0_7_0)) - (((FFTW_REAL) FFTW_K748510748) * (tim0_5_0 + tim0_8_0)) - (((FFTW_REAL) FFTW_K354604887) * (tim0_4_0 + tim0_9_0));
	  tim1_1_0 = (((FFTW_REAL) FFTW_K464723172) * (tre0_12_0 - tre0_1_0)) + (((FFTW_REAL) FFTW_K822983865) * (tre0_11_0 - tre0_2_0)) + (((FFTW_REAL) FFTW_K992708874) * (tre0_10_0 - tre0_3_0)) + (((FFTW_REAL) FFTW_K935016242) * (tre0_9_0 - tre0_4_0)) + (((FFTW_REAL) FFTW_K663122658) * (tre0_8_0 - tre0_5_0)) + (((FFTW_REAL) FFTW_K239315664) * (tre0_7_0 - tre0_6_0));
	  c_im(out[ostride]) = tim1_0_0 + tim1_1_0;
	  c_im(out[12 * ostride]) = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tre1_1_0;
	  tre1_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K568064746) * (tre0_1_0 + tre0_12_0)) + (((FFTW_REAL) FFTW_K120536680) * (tre0_5_0 + tre0_8_0)) + (((FFTW_REAL) FFTW_K885456025) * (tre0_6_0 + tre0_7_0)) - (((FFTW_REAL) FFTW_K748510748) * (tre0_4_0 + tre0_9_0)) - (((FFTW_REAL) FFTW_K970941817) * (tre0_3_0 + tre0_10_0)) - (((FFTW_REAL) FFTW_K354604887) * (tre0_2_0 + tre0_11_0));
	  tre1_1_0 = (((FFTW_REAL) FFTW_K822983865) * (tim0_1_0 - tim0_12_0)) + (((FFTW_REAL) FFTW_K935016242) * (tim0_2_0 - tim0_11_0)) + (((FFTW_REAL) FFTW_K239315664) * (tim0_3_0 - tim0_10_0)) + (((FFTW_REAL) FFTW_K663122658) * (tim0_9_0 - tim0_4_0)) + (((FFTW_REAL) FFTW_K992708874) * (tim0_8_0 - tim0_5_0)) + (((FFTW_REAL) FFTW_K464723172) * (tim0_7_0 - tim0_6_0));
	  c_re(out[2 * ostride]) = tre1_0_0 + tre1_1_0;
	  c_re(out[11 * ostride]) = tre1_0_0 - tre1_1_0;
     }
     {
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tim1_1_0;
	  tim1_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K568064746) * (tim0_1_0 + tim0_12_0)) + (((FFTW_REAL) FFTW_K120536680) * (tim0_5_0 + tim0_8_0)) + (((FFTW_REAL) FFTW_K885456025) * (tim0_6_0 + tim0_7_0)) - (((FFTW_REAL) FFTW_K748510748) * (tim0_4_0 + tim0_9_0)) - (((FFTW_REAL) FFTW_K970941817) * (tim0_3_0 + tim0_10_0)) - (((FFTW_REAL) FFTW_K354604887) * (tim0_2_0 + tim0_11_0));
	  tim1_1_0 = (((FFTW_REAL) FFTW_K822983865) * (tre0_12_0 - tre0_1_0)) + (((FFTW_REAL) FFTW_K935016242) * (tre0_11_0 - tre0_2_0)) + (((FFTW_REAL) FFTW_K239315664) * (tre0_10_0 - tre0_3_0)) + (((FFTW_REAL) FFTW_K663122658) * (tre0_4_0 - tre0_9_0)) + (((FFTW_REAL) FFTW_K992708874) * (tre0_5_0 - tre0_8_0)) + (((FFTW_REAL) FFTW_K464723172) * (tre0_6_0 - tre0_7_0));
	  c_im(out[2 * ostride]) = tim1_0_0 + tim1_1_0;
	  c_im(out[11 * ostride]) = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tre1_1_0;
	  tre1_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K120536680) * (tre0_1_0 + tre0_12_0)) + (((FFTW_REAL) FFTW_K885456025) * (tre0_4_0 + tre0_9_0)) + (((FFTW_REAL) FFTW_K568064746) * (tre0_5_0 + tre0_8_0)) - (((FFTW_REAL) FFTW_K748510748) * (tre0_6_0 + tre0_7_0)) - (((FFTW_REAL) FFTW_K354604887) * (tre0_3_0 + tre0_10_0)) - (((FFTW_REAL) FFTW_K970941817) * (tre0_2_0 + tre0_11_0));
	  tre1_1_0 = (((FFTW_REAL) FFTW_K992708874) * (tim0_1_0 - tim0_12_0)) + (((FFTW_REAL) FFTW_K239315664) * (tim0_2_0 - tim0_11_0)) + (((FFTW_REAL) FFTW_K935016242) * (tim0_10_0 - tim0_3_0)) + (((FFTW_REAL) FFTW_K464723172) * (tim0_9_0 - tim0_4_0)) + (((FFTW_REAL) FFTW_K822983865) * (tim0_5_0 - tim0_8_0)) + (((FFTW_REAL) FFTW_K663122658) * (tim0_6_0 - tim0_7_0));
	  c_re(out[3 * ostride]) = tre1_0_0 + tre1_1_0;
	  c_re(out[10 * ostride]) = tre1_0_0 - tre1_1_0;
     }
     {
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tim1_1_0;
	  tim1_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K120536680) * (tim0_1_0 + tim0_12_0)) + (((FFTW_REAL) FFTW_K885456025) * (tim0_4_0 + tim0_9_0)) + (((FFTW_REAL) FFTW_K568064746) * (tim0_5_0 + tim0_8_0)) - (((FFTW_REAL) FFTW_K748510748) * (tim0_6_0 + tim0_7_0)) - (((FFTW_REAL) FFTW_K354604887) * (tim0_3_0 + tim0_10_0)) - (((FFTW_REAL) FFTW_K970941817) * (tim0_2_0 + tim0_11_0));
	  tim1_1_0 = (((FFTW_REAL) FFTW_K992708874) * (tre0_12_0 - tre0_1_0)) + (((FFTW_REAL) FFTW_K239315664) * (tre0_11_0 - tre0_2_0)) + (((FFTW_REAL) FFTW_K935016242) * (tre0_3_0 - tre0_10_0)) + (((FFTW_REAL) FFTW_K464723172) * (tre0_4_0 - tre0_9_0)) + (((FFTW_REAL) FFTW_K822983865) * (tre0_8_0 - tre0_5_0)) + (((FFTW_REAL) FFTW_K663122658) * (tre0_7_0 - tre0_6_0));
	  c_im(out[3 * ostride]) = tim1_0_0 + tim1_1_0;
	  c_im(out[10 * ostride]) = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tre1_1_0;
	  tre1_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K885456025) * (tre0_3_0 + tre0_10_0)) + (((FFTW_REAL) FFTW_K120536680) * (tre0_4_0 + tre0_9_0)) + (((FFTW_REAL) FFTW_K568064746) * (tre0_6_0 + tre0_7_0)) - (((FFTW_REAL) FFTW_K970941817) * (tre0_5_0 + tre0_8_0)) - (((FFTW_REAL) FFTW_K748510748) * (tre0_2_0 + tre0_11_0)) - (((FFTW_REAL) FFTW_K354604887) * (tre0_1_0 + tre0_12_0));
	  tre1_1_0 = (((FFTW_REAL) FFTW_K935016242) * (tim0_1_0 - tim0_12_0)) + (((FFTW_REAL) FFTW_K663122658) * (tim0_11_0 - tim0_2_0)) + (((FFTW_REAL) FFTW_K464723172) * (tim0_10_0 - tim0_3_0)) + (((FFTW_REAL) FFTW_K992708874) * (tim0_4_0 - tim0_9_0)) + (((FFTW_REAL) FFTW_K239315664) * (tim0_8_0 - tim0_5_0)) + (((FFTW_REAL) FFTW_K822983865) * (tim0_7_0 - tim0_6_0));
	  c_re(out[4 * ostride]) = tre1_0_0 + tre1_1_0;
	  c_re(out[9 * ostride]) = tre1_0_0 - tre1_1_0;
     }
     {
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tim1_1_0;
	  tim1_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K885456025) * (tim0_3_0 + tim0_10_0)) + (((FFTW_REAL) FFTW_K120536680) * (tim0_4_0 + tim0_9_0)) + (((FFTW_REAL) FFTW_K568064746) * (tim0_6_0 + tim0_7_0)) - (((FFTW_REAL) FFTW_K970941817) * (tim0_5_0 + tim0_8_0)) - (((FFTW_REAL) FFTW_K748510748) * (tim0_2_0 + tim0_11_0)) - (((FFTW_REAL) FFTW_K354604887) * (tim0_1_0 + tim0_12_0));
	  tim1_1_0 = (((FFTW_REAL) FFTW_K935016242) * (tre0_12_0 - tre0_1_0)) + (((FFTW_REAL) FFTW_K663122658) * (tre0_2_0 - tre0_11_0)) + (((FFTW_REAL) FFTW_K464723172) * (tre0_3_0 - tre0_10_0)) + (((FFTW_REAL) FFTW_K992708874) * (tre0_9_0 - tre0_4_0)) + (((FFTW_REAL) FFTW_K239315664) * (tre0_5_0 - tre0_8_0)) + (((FFTW_REAL) FFTW_K822983865) * (tre0_6_0 - tre0_7_0));
	  c_im(out[4 * ostride]) = tim1_0_0 + tim1_1_0;
	  c_im(out[9 * ostride]) = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tre1_1_0;
	  tre1_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K120536680) * (tre0_2_0 + tre0_11_0)) + (((FFTW_REAL) FFTW_K568064746) * (tre0_3_0 + tre0_10_0)) + (((FFTW_REAL) FFTW_K885456025) * (tre0_5_0 + tre0_8_0)) - (((FFTW_REAL) FFTW_K354604887) * (tre0_6_0 + tre0_7_0)) - (((FFTW_REAL) FFTW_K970941817) * (tre0_4_0 + tre0_9_0)) - (((FFTW_REAL) FFTW_K748510748) * (tre0_1_0 + tre0_12_0));
	  tre1_1_0 = (((FFTW_REAL) FFTW_K663122658) * (tim0_1_0 - tim0_12_0)) + (((FFTW_REAL) FFTW_K992708874) * (tim0_11_0 - tim0_2_0)) + (((FFTW_REAL) FFTW_K822983865) * (tim0_3_0 - tim0_10_0)) + (((FFTW_REAL) FFTW_K239315664) * (tim0_9_0 - tim0_4_0)) + (((FFTW_REAL) FFTW_K464723172) * (tim0_8_0 - tim0_5_0)) + (((FFTW_REAL) FFTW_K935016242) * (tim0_6_0 - tim0_7_0));
	  c_re(out[5 * ostride]) = tre1_0_0 + tre1_1_0;
	  c_re(out[8 * ostride]) = tre1_0_0 - tre1_1_0;
     }
     {
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tim1_1_0;
	  tim1_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K120536680) * (tim0_2_0 + tim0_11_0)) + (((FFTW_REAL) FFTW_K568064746) * (tim0_3_0 + tim0_10_0)) + (((FFTW_REAL) FFTW_K885456025) * (tim0_5_0 + tim0_8_0)) - (((FFTW_REAL) FFTW_K354604887) * (tim0_6_0 + tim0_7_0)) - (((FFTW_REAL) FFTW_K970941817) * (tim0_4_0 + tim0_9_0)) - (((FFTW_REAL) FFTW_K748510748) * (tim0_1_0 + tim0_12_0));
	  tim1_1_0 = (((FFTW_REAL) FFTW_K663122658) * (tre0_12_0 - tre0_1_0)) + (((FFTW_REAL) FFTW_K992708874) * (tre0_2_0 - tre0_11_0)) + (((FFTW_REAL) FFTW_K822983865) * (tre0_10_0 - tre0_3_0)) + (((FFTW_REAL) FFTW_K239315664) * (tre0_4_0 - tre0_9_0)) + (((FFTW_REAL) FFTW_K464723172) * (tre0_5_0 - tre0_8_0)) + (((FFTW_REAL) FFTW_K935016242) * (tre0_7_0 - tre0_6_0));
	  c_im(out[5 * ostride]) = tim1_0_0 + tim1_1_0;
	  c_im(out[8 * ostride]) = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tre1_1_0;
	  tre1_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K885456025) * (tre0_2_0 + tre0_11_0)) + (((FFTW_REAL) FFTW_K568064746) * (tre0_4_0 + tre0_9_0)) + (((FFTW_REAL) FFTW_K120536680) * (tre0_6_0 + tre0_7_0)) - (((FFTW_REAL) FFTW_K354604887) * (tre0_5_0 + tre0_8_0)) - (((FFTW_REAL) FFTW_K748510748) * (tre0_3_0 + tre0_10_0)) - (((FFTW_REAL) FFTW_K970941817) * (tre0_1_0 + tre0_12_0));
	  tre1_1_0 = (((FFTW_REAL) FFTW_K239315664) * (tim0_1_0 - tim0_12_0)) + (((FFTW_REAL) FFTW_K464723172) * (tim0_11_0 - tim0_2_0)) + (((FFTW_REAL) FFTW_K663122658) * (tim0_3_0 - tim0_10_0)) + (((FFTW_REAL) FFTW_K822983865) * (tim0_9_0 - tim0_4_0)) + (((FFTW_REAL) FFTW_K935016242) * (tim0_5_0 - tim0_8_0)) + (((FFTW_REAL) FFTW_K992708874) * (tim0_7_0 - tim0_6_0));
	  c_re(out[6 * ostride]) = tre1_0_0 + tre1_1_0;
	  c_re(out[7 * ostride]) = tre1_0_0 - tre1_1_0;
     }
     {
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tim1_1_0;
	  tim1_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K885456025) * (tim0_2_0 + tim0_11_0)) + (((FFTW_REAL) FFTW_K568064746) * (tim0_4_0 + tim0_9_0)) + (((FFTW_REAL) FFTW_K120536680) * (tim0_6_0 + tim0_7_0)) - (((FFTW_REAL) FFTW_K354604887) * (tim0_5_0 + tim0_8_0)) - (((FFTW_REAL) FFTW_K748510748) * (tim0_3_0 + tim0_10_0)) - (((FFTW_REAL) FFTW_K970941817) * (tim0_1_0 + tim0_12_0));
	  tim1_1_0 = (((FFTW_REAL) FFTW_K239315664) * (tre0_12_0 - tre0_1_0)) + (((FFTW_REAL) FFTW_K464723172) * (tre0_2_0 - tre0_11_0)) + (((FFTW_REAL) FFTW_K663122658) * (tre0_10_0 - tre0_3_0)) + (((FFTW_REAL) FFTW_K822983865) * (tre0_4_0 - tre0_9_0)) + (((FFTW_REAL) FFTW_K935016242) * (tre0_8_0 - tre0_5_0)) + (((FFTW_REAL) FFTW_K992708874) * (tre0_6_0 - tre0_7_0));
	  c_im(out[6 * ostride]) = tim1_0_0 + tim1_1_0;
	  c_im(out[7 * ostride]) = tim1_0_0 - tim1_1_0;
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 208 FP additions and 72 FP multiplications */

void fftw_no_twiddle_14(const FFTW_COMPLEX *in, FFTW_COMPLEX *out, int istride, int ostride)
{
     FFTW_REAL tre0_0_0;
     FFTW_REAL tim0_0_0;
     FFTW_REAL tre0_0_1;
     FFTW_REAL tim0_0_1;
     FFTW_REAL tre0_0_2;
     FFTW_REAL tim0_0_2;
     FFTW_REAL tre0_0_3;
     FFTW_REAL tim0_0_3;
     FFTW_REAL tre0_0_4;
     FFTW_REAL tim0_0_4;
     FFTW_REAL tre0_0_5;
     FFTW_REAL tim0_0_5;
     FFTW_REAL tre0_0_6;
     FFTW_REAL tim0_0_6;
     FFTW_REAL tre0_1_0;
     FFTW_REAL tim0_1_0;
     FFTW_REAL tre0_1_1;
     FFTW_REAL tim0_1_1;
     FFTW_REAL tre0_1_2;
     FFTW_REAL tim0_1_2;
     FFTW_REAL tre0_1_3;
     FFTW_REAL tim0_1_3;
     FFTW_REAL tre0_1_4;
     FFTW_REAL tim0_1_4;
     FFTW_REAL tre0_1_5;
     FFTW_REAL tim0_1_5;
     FFTW_REAL tre0_1_6;
     FFTW_REAL tim0_1_6;
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  tre1_0_0 = c_re(in[0]);
	  tim1_0_0 = c_im(in[0]);
	  tre1_1_0 = c_re(in[7 * istride]);
	  tim1_1_0 = c_im(in[7 * istride]);
	  tre0_0_0 = tre1_0_0 + tre1_1_0;
	  tim0_0_0 = tim1_0_0 + tim1_1_0;
	  tre0_1_0 = tre1_0_0 - tre1_1_0;
	  tim0_1_0 = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  tre1_0_0 = c_re(in[2 * istride]);
	  tim1_0_0 = c_im(in[2 * istride]);
	  tre1_1_0 = c_re(in[9 * istride]);
	  tim1_1_0 = c_im(in[9 * istride]);
	  tre0_0_1 = tre1_0_0 + tre1_1_0;
	  tim0_0_1 = tim1_0_0 + tim1_1_0;
	  tre0_1_1 = tre1_0_0 - tre1_1_0;
	  tim0_1_1 = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  tre1_0_0 = c_re(in[4 * istride]);
	  tim1_0_0 = c_im(in[4 * istride]);
	  tre1_1_0 = c_re(in[11 * istride]);
	  tim1_1_0 = c_im(in[11 * istride]);
	  tre0_0_2 = tre1_0_0 + tre1_1_0;
	  tim0_0_2 = tim1_0_0 + tim1_1_0;
	  tre0_1_2 = tre1_0_0 - tre1_1_0;
	  tim0_1_2 = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  tre1_0_0 = c_re(in[6 * istride]);
	  tim1_0_0 = c_im(in[6 * istride]);
	  tre1_1_0 = c_re(in[13 * istride]);
	  tim1_1_0 = c_im(in[13 * istride]);
	  tre0_0_3 = tre1_0_0 + tre1_1_0;
	  tim0_0_3 = tim1_0_0 + tim1_1_0;
	  tre0_1_3 = tre1_0_0 - tre1_1_0;
	  tim0_1_3 = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  tre1_0_0 = c_re(in[8 * istride]);
	  tim1_0_0 = c_im(in[8 * istride]);
	  tre1_1_0 = c_re(in[istride]);
	  tim1_1_0 = c_im(in[istride]);
	  tre0_0_4 = tre1_0_0 + tre1_1_0;
	  tim0_0_4 = tim1_0_0 + tim1_1_0;
	  tre0_1_4 = tre1_0_0 - tre1_1_0;
	  tim0_1_4 = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  tre1_0_0 = c_re(in[10 * istride]);
	  tim1_0_0 = c_im(in[10 * istride]);
	  tre1_1_0 = c_re(in[3 * istride]);
	  tim1_1_0 = c_im(in[3 * istride]);
	  tre0_0_5 = tre1_0_0 + tre1_1_0;
	  tim0_0_5 = tim1_0_0 + tim1_1_0;
	  tre0_1_5 = tre1_0_0 - tre1_1_0;
	  tim0_1_5 = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  tre1_0_0 = c_re(in[12 * istride]);
	  tim1_0_0 = c_im(in[12 * istride]);
	  tre1_1_0 = c_re(in[5 * istride]);
	  tim1_1_0 = c_im(in[5 * istride]);
	  tre0_0_6 = tre1_0_0 + tre1_1_0;
	  tim0_0_6 = tim1_0_0 + tim1_1_0;
	  tre0_1_6 = tre1_0_0 - tre1_1_0;
	  tim0_1_6 = tim1_0_0 - tim1_1_0;
     }
     c_re(out[0]) = tre0_0_0 + tre0_0_1 + tre0_0_2 + tre0_0_3 + tre0_0_4 + tre0_0_5 + tre0_0_6;
     c_im(out[0]) = tim0_0_0 + tim0_0_1 + tim0_0_2 + tim0_0_3 + tim0_0_4 + tim0_0_5 + tim0_0_6;
     {
	  FFTW_REAL tre2_0_0;
	  FFTW_REAL tre2_1_0;
	  tre2_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K623489801) * (tre0_0_1 + tre0_0_6)) - (((FFTW_REAL) FFTW_K900968867) * (tre0_0_3 + tre0_0_4)) - (((FFTW_REAL) FFTW_K222520933) * (tre0_0_2 + tre0_0_5));
	  tre2_1_0 = (((FFTW_REAL) FFTW_K781831482) * (tim0_0_1 - tim0_0_6)) + (((FFTW_REAL) FFTW_K974927912) * (tim0_0_2 - tim0_0_5)) + (((FFTW_REAL) FFTW_K433883739) * (tim0_0_3 - tim0_0_4));
	  c_re(out[8 * ostride]) = tre2_0_0 + tre2_1_0;
	  c_re(out[6 * ostride]) = tre2_0_0 - tre2_1_0;
     }
     {
	  FFTW_REAL tim2_0_0;
	  FFTW_REAL tim2_1_0;
	  tim2_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K623489801) * (tim0_0_1 + tim0_0_6)) - (((FFTW_REAL) FFTW_K900968867) * (tim0_0_3 + tim0_0_4)) - (((FFTW_REAL) FFTW_K222520933) * (tim0_0_2 + tim0_0_5));
	  tim2_1_0 = (((FFTW_REAL) FFTW_K781831482) * (tre0_0_6 - tre0_0_1)) + (((FFTW_REAL) FFTW_K974927912) * (tre0_0_5 - tre0_0_2)) + (((FFTW_REAL) FFTW_K433883739) * (tre0_0_4 - tre0_0_3));
	  c_im(out[8 * ostride]) = tim2_0_0 + tim2_1_0;
	  c_im(out[6 * ostride]) = tim2_0_0 - tim2_1_0;
     }
     {
	  FFTW_REAL tre2_0_0;
	  FFTW_REAL tre2_1_0;
	  tre2_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K623489801) * (tre0_0_3 + tre0_0_4)) - (((FFTW_REAL) FFTW_K900968867) * (tre0_0_2 + tre0_0_5)) - (((FFTW_REAL) FFTW_K222520933) * (tre0_0_1 + tre0_0_6));
	  tre2_1_0 = (((FFTW_REAL) FFTW_K974927912) * (tim0_0_1 - tim0_0_6)) + (((FFTW_REAL) FFTW_K433883739) * (tim0_0_5 - tim0_0_2)) + (((FFTW_REAL) FFTW_K781831482) * (tim0_0_4 - tim0_0_3));
	  c_re(out[2 * ostride]) = tre2_0_0 + tre2_1_0;
	  c_re(out[12 * ostride]) = tre2_0_0 - tre2_1_0;
     }
     {
	  FFTW_REAL tim2_0_0;
	  FFTW_REAL tim2_1_0;
	  tim2_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K623489801) * (tim0_0_3 + tim0_0_4)) - (((FFTW_REAL) FFTW_K900968867) * (tim0_0_2 + tim0_0_5)) - (((FFTW_REAL) FFTW_K222520933) * (tim0_0_1 + tim0_0_6));
	  tim2_1_0 = (((FFTW_REAL) FFTW_K974927912) * (tre0_0_6 - tre0_0_1)) + (((FFTW_REAL) FFTW_K433883739) * (tre0_0_2 - tre0_0_5)) + (((FFTW_REAL) FFTW_K781831482) * (tre0_0_3 - tre0_0_4));
	  c_im(out[2 * ostride]) = tim2_0_0 + tim2_1_0;
	  c_im(out[12 * ostride]) = tim2_0_0 - tim2_1_0;
     }
     {
	  FFTW_REAL tre2_0_0;
	  FFTW_REAL tre2_1_0;
	  tre2_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K623489801) * (tre0_0_2 + tre0_0_5)) - (((FFTW_REAL) FFTW_K222520933) * (tre0_0_3 + tre0_0_4)) - (((FFTW_REAL) FFTW_K900968867) * (tre0_0_1 + tre0_0_6));
	  tre2_1_0 = (((FFTW_REAL) FFTW_K433883739) * (tim0_0_1 - tim0_0_6)) + (((FFTW_REAL) FFTW_K781831482) * (tim0_0_5 - tim0_0_2)) + (((FFTW_REAL) FFTW_K974927912) * (tim0_0_3 - tim0_0_4));
	  c_re(out[10 * ostride]) = tre2_0_0 + tre2_1_0;
	  c_re(out[4 * ostride]) = tre2_0_0 - tre2_1_0;
     }
     {
	  FFTW_REAL tim2_0_0;
	  FFTW_REAL tim2_1_0;
	  tim2_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K623489801) * (tim0_0_2 + tim0_0_5)) - (((FFTW_REAL) FFTW_K222520933) * (tim0_0_3 + tim0_0_4)) - (((FFTW_REAL) FFTW_K900968867) * (tim0_0_1 + tim0_0_6));
	  tim2_1_0 = (((FFTW_REAL) FFTW_K433883739) * (tre0_0_6 - tre0_0_1)) + (((FFTW_REAL) FFTW_K781831482) * (tre0_0_2 - tre0_0_5)) + (((FFTW_REAL) FFTW_K974927912) * (tre0_0_4 - tre0_0_3));
	  c_im(out[10 * ostride]) = tim2_0_0 + tim2_1_0;
	  c_im(out[4 * ostride]) = tim2_0_0 - tim2_1_0;
     }
     c_re(out[7 * ostride]) = tre0_1_0 + tre0_1_1 + tre0_1_2 + tre0_1_3 + tre0_1_4 + tre0_1_5 + tre0_1_6;
     c_im(out[7 * ostride]) = tim0_1_0 + tim0_1_1 + tim0_1_2 + tim0_1_3 + tim0_1_4 + tim0_1_5 + tim0_1_6;
     {
	  FFTW_REAL tre2_0_0;
	  FFTW_REAL tre2_1_0;
	  tre2_0_0 = tre0_1_0 + (((FFTW_REAL) FFTW_K623489801) * (tre0_1_1 + tre0_1_6)) - (((FFTW_REAL) FFTW_K900968867) * (tre0_1_3 + tre0_1_4)) - (((FFTW_REAL) FFTW_K222520933) * (tre0_1_2 + tre0_1_5));
	  tre2_1_0 = (((FFTW_REAL) FFTW_K781831482) * (tim0_1_1 - tim0_1_6)) + (((FFTW_REAL) FFTW_K974927912) * (tim0_1_2 - tim0_1_5)) + (((FFTW_REAL) FFTW_K433883739) * (tim0_1_3 - tim0_1_4));
	  c_re(out[ostride]) = tre2_0_0 + tre2_1_0;
	  c_re(out[13 * ostride]) = tre2_0_0 - tre2_1_0;
     }
     {
	  FFTW_REAL tim2_0_0;
	  FFTW_REAL tim2_1_0;
	  tim2_0_0 = tim0_1_0 + (((FFTW_REAL) FFTW_K623489801) * (tim0_1_1 + tim0_1_6)) - (((FFTW_REAL) FFTW_K900968867) * (tim0_1_3 + tim0_1_4)) - (((FFTW_REAL) FFTW_K222520933) * (tim0_1_2 + tim0_1_5));
	  tim2_1_0 = (((FFTW_REAL) FFTW_K781831482) * (tre0_1_6 - tre0_1_1)) + (((FFTW_REAL) FFTW_K974927912) * (tre0_1_5 - tre0_1_2)) + (((FFTW_REAL) FFTW_K433883739) * (tre0_1_4 - tre0_1_3));
	  c_im(out[ostride]) = tim2_0_0 + tim2_1_0;
	  c_im(out[13 * ostride]) = tim2_0_0 - tim2_1_0;
     }
     {
	  FFTW_REAL tre2_0_0;
	  FFTW_REAL tre2_1_0;
	  tre2_0_0 = tre0_1_0 + (((FFTW_REAL) FFTW_K623489801) * (tre0_1_3 + tre0_1_4)) - (((FFTW_REAL) FFTW_K900968867) * (tre0_1_2 + tre0_1_5)) - (((FFTW_REAL) FFTW_K222520933) * (tre0_1_1 + tre0_1_6));
	  tre2_1_0 = (((FFTW_REAL) FFTW_K974927912) * (tim0_1_1 - tim0_1_6)) + (((FFTW_REAL) FFTW_K433883739) * (tim0_1_5 - tim0_1_2)) + (((FFTW_REAL) FFTW_K781831482) * (tim0_1_4 - tim0_1_3));
	  c_re(out[9 * ostride]) = tre2_0_0 + tre2_1_0;
	  c_re(out[5 * ostride]) = tre2_0_0 - tre2_1_0;
     }
     {
	  FFTW_REAL tim2_0_0;
	  FFTW_REAL tim2_1_0;
	  tim2_0_0 = tim0_1_0 + (((FFTW_REAL) FFTW_K623489801) * (tim0_1_3 + tim0_1_4)) - (((FFTW_REAL) FFTW_K900968867) * (tim0_1_2 + tim0_1_5)) - (((FFTW_REAL) FFTW_K222520933) * (tim0_1_1 + tim0_1_6));
	  tim2_1_0 = (((FFTW_REAL) FFTW_K974927912) * (tre0_1_6 - tre0_1_1)) + (((FFTW_REAL) FFTW_K433883739) * (tre0_1_2 - tre0_1_5)) + (((FFTW_REAL) FFTW_K781831482) * (tre0_1_3 - tre0_1_4));
	  c_im(out[9 * ostride]) = tim2_0_0 + tim2_1_0;
	  c_im(out[5 * ostride]) = tim2_0_0 - tim2_1_0;
     }
     {
	  FFTW_REAL tre2_0_0;
	  FFTW_REAL tre2_1_0;
	  tre2_0_0 = tre0_1_0 + (((FFTW_REAL) FFTW_K623489801) * (tre0_1_2 + tre0_1_5)) - (((FFTW_REAL) FFTW_K222520933) * (tre0_1_3 + tre0_1_4)) - (((FFTW_REAL) FFTW_K900968867) * (tre0_1_1 + tre0_1_6));
	  tre2_1_0 = (((FFTW_REAL) FFTW_K433883739) * (tim0_1_1 - tim0_1_6)) + (((FFTW_REAL) FFTW_K781831482) * (tim0_1_5 - tim0_1_2)) + (((FFTW_REAL) FFTW_K974927912) * (tim0_1_3 - tim0_1_4));
	  c_re(out[3 * ostride]) = tre2_0_0 + tre2_1_0;
	  c_re(out[11 * ostride]) = tre2_0_0 - tre2_1_0;
     }
     {
	  FFTW_REAL tim2_0_0;
	  FFTW_REAL tim2_1_0;
	  tim2_0_0 = tim0_1_0 + (((FFTW_REAL) FFTW_K623489801) * (tim0_1_2 + tim0_1_5)) - (((FFTW_REAL) FFTW_K222520933) * (tim0_1_3 + tim0_1_4)) - (((FFTW_REAL) FFTW_K900968867) * (tim0_1_1 + tim0_1_6));
	  tim2_1_0 = (((FFTW_REAL) FFTW_K433883739) * (tre0_1_6 - tre0_1_1)) + (((FFTW_REAL) FFTW_K781831482) * (tre0_1_2 - tre0_1_5)) + (((FFTW_REAL) FFTW_K974927912) * (tre0_1_4 - tre0_1_3));
	  c_im(out[3 * ostride]) = tim2_0_0 + tim2_1_0;
	  c_im(out[11 * ostride]) = tim2_0_0 - tim2_1_0;
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 202 FP additions and 68 FP multiplications */

void fftw_no_twiddle_15(const FFTW_COMPLEX *in, FFTW_COMPLEX *out, int istride, int ostride)
{
     FFTW_REAL tre0_0_0;
     FFTW_REAL tim0_0_0;
     FFTW_REAL tre0_0_1;
     FFTW_REAL tim0_0_1;
     FFTW_REAL tre0_0_2;
     FFTW_REAL tim0_0_2;
     FFTW_REAL tre0_0_3;
     FFTW_REAL tim0_0_3;
     FFTW_REAL tre0_0_4;
     FFTW_REAL tim0_0_4;
     FFTW_REAL tre0_1_0;
     FFTW_REAL tim0_1_0;
     FFTW_REAL tre0_1_1;
     FFTW_REAL tim0_1_1;
     FFTW_REAL tre0_1_2;
     FFTW_REAL tim0_1_2;
     FFTW_REAL tre0_1_3;
     FFTW_REAL tim0_1_3;
     FFTW_REAL tre0_1_4;
     FFTW_REAL tim0_1_4;
     FFTW_REAL tre0_2_0;
     FFTW_REAL tim0_2_0;
     FFTW_REAL tre0_2_1;
     FFTW_REAL tim0_2_1;
     FFTW_REAL tre0_2_2;
     FFTW_REAL tim0_2_2;
     FFTW_REAL tre0_2_3;
     FFTW_REAL tim0_2_3;
     FFTW_REAL tre0_2_4;
     FFTW_REAL tim0_2_4;
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_2_0;
	  FFTW_REAL tim1_2_0;
	  tre1_0_0 = c_re(in[0]);
	  tim1_0_0 = c_im(in[0]);
	  tre1_1_0 = c_re(in[5 * istride]);
	  tim1_1_0 = c_im(in[5 * istride]);
	  tre1_2_0 = c_re(in[10 * istride]);
	  tim1_2_0 = c_im(in[10 * istride]);
	  tre0_0_0 = tre1_0_0 + tre1_1_0 + tre1_2_0;
	  tim0_0_0 = tim1_0_0 + tim1_1_0 + tim1_2_0;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tre2_1_0;
	       tre2_0_0 = tre1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tre1_1_0 + tre1_2_0));
	       tre2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tim1_1_0 - tim1_2_0);
	       tre0_1_0 = tre2_0_0 + tre2_1_0;
	       tre0_2_0 = tre2_0_0 - tre2_1_0;
	  }
	  {
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tim2_1_0;
	       tim2_0_0 = tim1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tim1_1_0 + tim1_2_0));
	       tim2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tre1_2_0 - tre1_1_0);
	       tim0_1_0 = tim2_0_0 + tim2_1_0;
	       tim0_2_0 = tim2_0_0 - tim2_1_0;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_2_0;
	  FFTW_REAL tim1_2_0;
	  tre1_0_0 = c_re(in[3 * istride]);
	  tim1_0_0 = c_im(in[3 * istride]);
	  tre1_1_0 = c_re(in[8 * istride]);
	  tim1_1_0 = c_im(in[8 * istride]);
	  tre1_2_0 = c_re(in[13 * istride]);
	  tim1_2_0 = c_im(in[13 * istride]);
	  tre0_0_1 = tre1_0_0 + tre1_1_0 + tre1_2_0;
	  tim0_0_1 = tim1_0_0 + tim1_1_0 + tim1_2_0;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tre2_1_0;
	       tre2_0_0 = tre1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tre1_1_0 + tre1_2_0));
	       tre2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tim1_1_0 - tim1_2_0);
	       tre0_1_1 = tre2_0_0 + tre2_1_0;
	       tre0_2_1 = tre2_0_0 - tre2_1_0;
	  }
	  {
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tim2_1_0;
	       tim2_0_0 = tim1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tim1_1_0 + tim1_2_0));
	       tim2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tre1_2_0 - tre1_1_0);
	       tim0_1_1 = tim2_0_0 + tim2_1_0;
	       tim0_2_1 = tim2_0_0 - tim2_1_0;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_2_0;
	  FFTW_REAL tim1_2_0;
	  tre1_0_0 = c_re(in[6 * istride]);
	  tim1_0_0 = c_im(in[6 * istride]);
	  tre1_1_0 = c_re(in[11 * istride]);
	  tim1_1_0 = c_im(in[11 * istride]);
	  tre1_2_0 = c_re(in[istride]);
	  tim1_2_0 = c_im(in[istride]);
	  tre0_0_2 = tre1_0_0 + tre1_1_0 + tre1_2_0;
	  tim0_0_2 = tim1_0_0 + tim1_1_0 + tim1_2_0;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tre2_1_0;
	       tre2_0_0 = tre1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tre1_1_0 + tre1_2_0));
	       tre2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tim1_1_0 - tim1_2_0);
	       tre0_1_2 = tre2_0_0 + tre2_1_0;
	       tre0_2_2 = tre2_0_0 - tre2_1_0;
	  }
	  {
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tim2_1_0;
	       tim2_0_0 = tim1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tim1_1_0 + tim1_2_0));
	       tim2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tre1_2_0 - tre1_1_0);
	       tim0_1_2 = tim2_0_0 + tim2_1_0;
	       tim0_2_2 = tim2_0_0 - tim2_1_0;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_2_0;
	  FFTW_REAL tim1_2_0;
	  tre1_0_0 = c_re(in[9 * istride]);
	  tim1_0_0 = c_im(in[9 * istride]);
	  tre1_1_0 = c_re(in[14 * istride]);
	  tim1_1_0 = c_im(in[14 * istride]);
	  tre1_2_0 = c_re(in[4 * istride]);
	  tim1_2_0 = c_im(in[4 * istride]);
	  tre0_0_3 = tre1_0_0 + tre1_1_0 + tre1_2_0;
	  tim0_0_3 = tim1_0_0 + tim1_1_0 + tim1_2_0;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tre2_1_0;
	       tre2_0_0 = tre1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tre1_1_0 + tre1_2_0));
	       tre2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tim1_1_0 - tim1_2_0);
	       tre0_1_3 = tre2_0_0 + tre2_1_0;
	       tre0_2_3 = tre2_0_0 - tre2_1_0;
	  }
	  {
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tim2_1_0;
	       tim2_0_0 = tim1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tim1_1_0 + tim1_2_0));
	       tim2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tre1_2_0 - tre1_1_0);
	       tim0_1_3 = tim2_0_0 + tim2_1_0;
	       tim0_2_3 = tim2_0_0 - tim2_1_0;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_2_0;
	  FFTW_REAL tim1_2_0;
	  tre1_0_0 = c_re(in[12 * istride]);
	  tim1_0_0 = c_im(in[12 * istride]);
	  tre1_1_0 = c_re(in[2 * istride]);
	  tim1_1_0 = c_im(in[2 * istride]);
	  tre1_2_0 = c_re(in[7 * istride]);
	  tim1_2_0 = c_im(in[7 * istride]);
	  tre0_0_4 = tre1_0_0 + tre1_1_0 + tre1_2_0;
	  tim0_0_4 = tim1_0_0 + tim1_1_0 + tim1_2_0;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tre2_1_0;
	       tre2_0_0 = tre1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tre1_1_0 + tre1_2_0));
	       tre2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tim1_1_0 - tim1_2_0);
	       tre0_1_4 = tre2_0_0 + tre2_1_0;
	       tre0_2_4 = tre2_0_0 - tre2_1_0;
	  }
	  {
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tim2_1_0;
	       tim2_0_0 = tim1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tim1_1_0 + tim1_2_0));
	       tim2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tre1_2_0 - tre1_1_0);
	       tim0_1_4 = tim2_0_0 + tim2_1_0;
	       tim0_2_4 = tim2_0_0 - tim2_1_0;
	  }
     }
     c_re(out[0]) = tre0_0_0 + tre0_0_1 + tre0_0_2 + tre0_0_3 + tre0_0_4;
     c_im(out[0]) = tim0_0_0 + tim0_0_1 + tim0_0_2 + tim0_0_3 + tim0_0_4;
     {
	  FFTW_REAL tre2_0_0;
	  FFTW_REAL tre2_1_0;
	  tre2_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K309016994) * (tre0_0_1 + tre0_0_4)) - (((FFTW_REAL) FFTW_K809016994) * (tre0_0_2 + tre0_0_3));
	  tre2_1_0 = (((FFTW_REAL) FFTW_K951056516) * (tim0_0_1 - tim0_0_4)) + (((FFTW_REAL) FFTW_K587785252) * (tim0_0_2 - tim0_0_3));
	  c_re(out[6 * ostride]) = tre2_0_0 + tre2_1_0;
	  c_re(out[9 * ostride]) = tre2_0_0 - tre2_1_0;
     }
     {
	  FFTW_REAL tim2_0_0;
	  FFTW_REAL tim2_1_0;
	  tim2_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K309016994) * (tim0_0_1 + tim0_0_4)) - (((FFTW_REAL) FFTW_K809016994) * (tim0_0_2 + tim0_0_3));
	  tim2_1_0 = (((FFTW_REAL) FFTW_K951056516) * (tre0_0_4 - tre0_0_1)) + (((FFTW_REAL) FFTW_K587785252) * (tre0_0_3 - tre0_0_2));
	  c_im(out[6 * ostride]) = tim2_0_0 + tim2_1_0;
	  c_im(out[9 * ostride]) = tim2_0_0 - tim2_1_0;
     }
     {
	  FFTW_REAL tre2_0_0;
	  FFTW_REAL tre2_1_0;
	  tre2_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K309016994) * (tre0_0_2 + tre0_0_3)) - (((FFTW_REAL) FFTW_K809016994) * (tre0_0_1 + tre0_0_4));
	  tre2_1_0 = (((FFTW_REAL) FFTW_K587785252) * (tim0_0_1 - tim0_0_4)) + (((FFTW_REAL) FFTW_K951056516) * (tim0_0_3 - tim0_0_2));
	  c_re(out[12 * ostride]) = tre2_0_0 + tre2_1_0;
	  c_re(out[3 * ostride]) = tre2_0_0 - tre2_1_0;
     }
     {
	  FFTW_REAL tim2_0_0;
	  FFTW_REAL tim2_1_0;
	  tim2_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K309016994) * (tim0_0_2 + tim0_0_3)) - (((FFTW_REAL) FFTW_K809016994) * (tim0_0_1 + tim0_0_4));
	  tim2_1_0 = (((FFTW_REAL) FFTW_K587785252) * (tre0_0_4 - tre0_0_1)) + (((FFTW_REAL) FFTW_K951056516) * (tre0_0_2 - tre0_0_3));
	  c_im(out[12 * ostride]) = tim2_0_0 + tim2_1_0;
	  c_im(out[3 * ostride]) = tim2_0_0 - tim2_1_0;
     }
     c_re(out[10 * ostride]) = tre0_1_0 + tre0_1_1 + tre0_1_2 + tre0_1_3 + tre0_1_4;
     c_im(out[10 * ostride]) = tim0_1_0 + tim0_1_1 + tim0_1_2 + tim0_1_3 + tim0_1_4;
     {
	  FFTW_REAL tre2_0_0;
	  FFTW_REAL tre2_1_0;
	  tre2_0_0 = tre0_1_0 + (((FFTW_REAL) FFTW_K309016994) * (tre0_1_1 + tre0_1_4)) - (((FFTW_REAL) FFTW_K809016994) * (tre0_1_2 + tre0_1_3));
	  tre2_1_0 = (((FFTW_REAL) FFTW_K951056516) * (tim0_1_1 - tim0_1_4)) + (((FFTW_REAL) FFTW_K587785252) * (tim0_1_2 - tim0_1_3));
	  c_re(out[ostride]) = tre2_0_0 + tre2_1_0;
	  c_re(out[4 * ostride]) = tre2_0_0 - tre2_1_0;
     }
     {
	  FFTW_REAL tim2_0_0;
	  FFTW_REAL tim2_1_0;
	  tim2_0_0 = tim0_1_0 + (((FFTW_REAL) FFTW_K309016994) * (tim0_1_1 + tim0_1_4)) - (((FFTW_REAL) FFTW_K809016994) * (tim0_1_2 + tim0_1_3));
	  tim2_1_0 = (((FFTW_REAL) FFTW_K951056516) * (tre0_1_4 - tre0_1_1)) + (((FFTW_REAL) FFTW_K587785252) * (tre0_1_3 - tre0_1_2));
	  c_im(out[ostride]) = tim2_0_0 + tim2_1_0;
	  c_im(out[4 * ostride]) = tim2_0_0 - tim2_1_0;
     }
     {
	  FFTW_REAL tre2_0_0;
	  FFTW_REAL tre2_1_0;
	  tre2_0_0 = tre0_1_0 + (((FFTW_REAL) FFTW_K309016994) * (tre0_1_2 + tre0_1_3)) - (((FFTW_REAL) FFTW_K809016994) * (tre0_1_1 + tre0_1_4));
	  tre2_1_0 = (((FFTW_REAL) FFTW_K587785252) * (tim0_1_1 - tim0_1_4)) + (((FFTW_REAL) FFTW_K951056516) * (tim0_1_3 - tim0_1_2));
	  c_re(out[7 * ostride]) = tre2_0_0 + tre2_1_0;
	  c_re(out[13 * ostride]) = tre2_0_0 - tre2_1_0;
     }
     {
	  FFTW_REAL tim2_0_0;
	  FFTW_REAL tim2_1_0;
	  tim2_0_0 = tim0_1_0 + (((FFTW_REAL) FFTW_K309016994) * (tim0_1_2 + tim0_1_3)) - (((FFTW_REAL) FFTW_K809016994) * (tim0_1_1 + tim0_1_4));
	  tim2_1_0 = (((FFTW_REAL) FFTW_K587785252) * (tre0_1_4 - tre0_1_1)) + (((FFTW_REAL) FFTW_K951056516) * (tre0_1_2 - tre0_1_3));
	  c_im(out[7 * ostride]) = tim2_0_0 + tim2_1_0;
	  c_im(out[13 * ostride]) = tim2_0_0 - tim2_1_0;
     }
     c_re(out[5 * ostride]) = tre0_2_0 + tre0_2_1 + tre0_2_2 + tre0_2_3 + tre0_2_4;
     c_im(out[5 * ostride]) = tim0_2_0 + tim0_2_1 + tim0_2_2 + tim0_2_3 + tim0_2_4;
     {
	  FFTW_REAL tre2_0_0;
	  FFTW_REAL tre2_1_0;
	  tre2_0_0 = tre0_2_0 + (((FFTW_REAL) FFTW_K309016994) * (tre0_2_1 + tre0_2_4)) - (((FFTW_REAL) FFTW_K809016994) * (tre0_2_2 + tre0_2_3));
	  tre2_1_0 = (((FFTW_REAL) FFTW_K951056516) * (tim0_2_1 - tim0_2_4)) + (((FFTW_REAL) FFTW_K587785252) * (tim0_2_2 - tim0_2_3));
	  c_re(out[11 * ostride]) = tre2_0_0 + tre2_1_0;
	  c_re(out[14 * ostride]) = tre2_0_0 - tre2_1_0;
     }
     {
	  FFTW_REAL tim2_0_0;
	  FFTW_REAL tim2_1_0;
	  tim2_0_0 = tim0_2_0 + (((FFTW_REAL) FFTW_K309016994) * (tim0_2_1 + tim0_2_4)) - (((FFTW_REAL) FFTW_K809016994) * (tim0_2_2 + tim0_2_3));
	  tim2_1_0 = (((FFTW_REAL) FFTW_K951056516) * (tre0_2_4 - tre0_2_1)) + (((FFTW_REAL) FFTW_K587785252) * (tre0_2_3 - tre0_2_2));
	  c_im(out[11 * ostride]) = tim2_0_0 + tim2_1_0;
	  c_im(out[14 * ostride]) = tim2_0_0 - tim2_1_0;
     }
     {
	  FFTW_REAL tre2_0_0;
	  FFTW_REAL tre2_1_0;
	  tre2_0_0 = tre0_2_0 + (((FFTW_REAL) FFTW_K309016994) * (tre0_2_2 + tre0_2_3)) - (((FFTW_REAL) FFTW_K809016994) * (tre0_2_1 + tre0_2_4));
	  tre2_1_0 = (((FFTW_REAL) FFTW_K587785252) * (tim0_2_1 - tim0_2_4)) + (((FFTW_REAL) FFTW_K951056516) * (tim0_2_3 - tim0_2_2));
	  c_re(out[2 * ostride]) = tre2_0_0 + tre2_1_0;
	  c_re(out[8 * ostride]) = tre2_0_0 - tre2_1_0;
     }
     {
	  FFTW_REAL tim2_0_0;
	  FFTW_REAL tim2_1_0;
	  tim2_0_0 = tim0_2_0 + (((FFTW_REAL) FFTW_K309016994) * (tim0_2_2 + tim0_2_3)) - (((FFTW_REAL) FFTW_K809016994) * (tim0_2_1 + tim0_2_4));
	  tim2_1_0 = (((FFTW_REAL) FFTW_K587785252) * (tre0_2_4 - tre0_2_1)) + (((FFTW_REAL) FFTW_K951056516) * (tre0_2_2 - tre0_2_3));
	  c_im(out[2 * ostride]) = tim2_0_0 + tim2_1_0;
	  c_im(out[8 * ostride]) = tim2_0_0 - tim2_1_0;
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 144 FP additions and 24 FP multiplications */

void fftw_no_twiddle_16(const FFTW_COMPLEX *in, FFTW_COMPLEX *out, int istride, int ostride)
{
     FFTW_REAL tre0_0_0;
     FFTW_REAL tim0_0_0;
     FFTW_REAL tre0_0_1;
     FFTW_REAL tim0_0_1;
     FFTW_REAL tre0_0_2;
     FFTW_REAL tim0_0_2;
     FFTW_REAL tre0_0_3;
     FFTW_REAL tim0_0_3;
     FFTW_REAL tre0_1_0;
     FFTW_REAL tim0_1_0;
     FFTW_REAL tre0_1_1;
     FFTW_REAL tim0_1_1;
     FFTW_REAL tre0_1_2;
     FFTW_REAL tim0_1_2;
     FFTW_REAL tre0_1_3;
     FFTW_REAL tim0_1_3;
     FFTW_REAL tre0_2_0;
     FFTW_REAL tim0_2_0;
     FFTW_REAL tre0_2_1;
     FFTW_REAL tim0_2_1;
     FFTW_REAL tre0_2_2;
     FFTW_REAL tim0_2_2;
     FFTW_REAL tre0_2_3;
     FFTW_REAL tim0_2_3;
     FFTW_REAL tre0_3_0;
     FFTW_REAL tim0_3_0;
     FFTW_REAL tre0_3_1;
     FFTW_REAL tim0_3_1;
     FFTW_REAL tre0_3_2;
     FFTW_REAL tim0_3_2;
     FFTW_REAL tre0_3_3;
     FFTW_REAL tim0_3_3;
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[0]);
	       tim2_0_0 = c_im(in[0]);
	       tre2_1_0 = c_re(in[8 * istride]);
	       tim2_1_0 = c_im(in[8 * istride]);
	       tre1_0_0 = tre2_0_0 + tre2_1_0;
	       tim1_0_0 = tim2_0_0 + tim2_1_0;
	       tre1_1_0 = tre2_0_0 - tre2_1_0;
	       tim1_1_0 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[4 * istride]);
	       tim2_0_0 = c_im(in[4 * istride]);
	       tre2_1_0 = c_re(in[12 * istride]);
	       tim2_1_0 = c_im(in[12 * istride]);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  tre0_0_0 = tre1_0_0 + tre1_0_1;
	  tim0_0_0 = tim1_0_0 + tim1_0_1;
	  tre0_2_0 = tre1_0_0 - tre1_0_1;
	  tim0_2_0 = tim1_0_0 - tim1_0_1;
	  tre0_1_0 = tre1_1_0 + tim1_1_1;
	  tim0_1_0 = tim1_1_0 - tre1_1_1;
	  tre0_3_0 = tre1_1_0 - tim1_1_1;
	  tim0_3_0 = tim1_1_0 + tre1_1_1;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[istride]);
	       tim2_0_0 = c_im(in[istride]);
	       tre2_1_0 = c_re(in[9 * istride]);
	       tim2_1_0 = c_im(in[9 * istride]);
	       tre1_0_0 = tre2_0_0 + tre2_1_0;
	       tim1_0_0 = tim2_0_0 + tim2_1_0;
	       tre1_1_0 = tre2_0_0 - tre2_1_0;
	       tim1_1_0 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[5 * istride]);
	       tim2_0_0 = c_im(in[5 * istride]);
	       tre2_1_0 = c_re(in[13 * istride]);
	       tim2_1_0 = c_im(in[13 * istride]);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  tre0_0_1 = tre1_0_0 + tre1_0_1;
	  tim0_0_1 = tim1_0_0 + tim1_0_1;
	  tre0_2_1 = tre1_0_0 - tre1_0_1;
	  tim0_2_1 = tim1_0_0 - tim1_0_1;
	  tre0_1_1 = tre1_1_0 + tim1_1_1;
	  tim0_1_1 = tim1_1_0 - tre1_1_1;
	  tre0_3_1 = tre1_1_0 - tim1_1_1;
	  tim0_3_1 = tim1_1_0 + tre1_1_1;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[2 * istride]);
	       tim2_0_0 = c_im(in[2 * istride]);
	       tre2_1_0 = c_re(in[10 * istride]);
	       tim2_1_0 = c_im(in[10 * istride]);
	       tre1_0_0 = tre2_0_0 + tre2_1_0;
	       tim1_0_0 = tim2_0_0 + tim2_1_0;
	       tre1_1_0 = tre2_0_0 - tre2_1_0;
	       tim1_1_0 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[6 * istride]);
	       tim2_0_0 = c_im(in[6 * istride]);
	       tre2_1_0 = c_re(in[14 * istride]);
	       tim2_1_0 = c_im(in[14 * istride]);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  tre0_0_2 = tre1_0_0 + tre1_0_1;
	  tim0_0_2 = tim1_0_0 + tim1_0_1;
	  tre0_2_2 = tre1_0_0 - tre1_0_1;
	  tim0_2_2 = tim1_0_0 - tim1_0_1;
	  tre0_1_2 = tre1_1_0 + tim1_1_1;
	  tim0_1_2 = tim1_1_0 - tre1_1_1;
	  tre0_3_2 = tre1_1_0 - tim1_1_1;
	  tim0_3_2 = tim1_1_0 + tre1_1_1;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[3 * istride]);
	       tim2_0_0 = c_im(in[3 * istride]);
	       tre2_1_0 = c_re(in[11 * istride]);
	       tim2_1_0 = c_im(in[11 * istride]);
	       tre1_0_0 = tre2_0_0 + tre2_1_0;
	       tim1_0_0 = tim2_0_0 + tim2_1_0;
	       tre1_1_0 = tre2_0_0 - tre2_1_0;
	       tim1_1_0 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[7 * istride]);
	       tim2_0_0 = c_im(in[7 * istride]);
	       tre2_1_0 = c_re(in[15 * istride]);
	       tim2_1_0 = c_im(in[15 * istride]);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  tre0_0_3 = tre1_0_0 + tre1_0_1;
	  tim0_0_3 = tim1_0_0 + tim1_0_1;
	  tre0_2_3 = tre1_0_0 - tre1_0_1;
	  tim0_2_3 = tim1_0_0 - tim1_0_1;
	  tre0_1_3 = tre1_1_0 + tim1_1_1;
	  tim0_1_3 = tim1_1_0 - tre1_1_1;
	  tre0_3_3 = tre1_1_0 - tim1_1_1;
	  tim0_3_3 = tim1_1_0 + tre1_1_1;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  tre1_0_0 = tre0_0_0 + tre0_0_2;
	  tim1_0_0 = tim0_0_0 + tim0_0_2;
	  tre1_1_0 = tre0_0_0 - tre0_0_2;
	  tim1_1_0 = tim0_0_0 - tim0_0_2;
	  tre1_0_1 = tre0_0_1 + tre0_0_3;
	  tim1_0_1 = tim0_0_1 + tim0_0_3;
	  tre1_1_1 = tre0_0_1 - tre0_0_3;
	  tim1_1_1 = tim0_0_1 - tim0_0_3;
	  c_re(out[0]) = tre1_0_0 + tre1_0_1;
	  c_im(out[0]) = tim1_0_0 + tim1_0_1;
	  c_re(out[8 * ostride]) = tre1_0_0 - tre1_0_1;
	  c_im(out[8 * ostride]) = tim1_0_0 - tim1_0_1;
	  c_re(out[4 * ostride]) = tre1_1_0 + tim1_1_1;
	  c_im(out[4 * ostride]) = tim1_1_0 - tre1_1_1;
	  c_re(out[12 * ostride]) = tre1_1_0 - tim1_1_1;
	  c_im(out[12 * ostride]) = tim1_1_0 + tre1_1_1;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  {
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_1_2 + tim0_1_2);
	       tim2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_1_2 - tre0_1_2);
	       tre1_0_0 = tre0_1_0 + tre2_1_0;
	       tim1_0_0 = tim0_1_0 + tim2_1_0;
	       tre1_1_0 = tre0_1_0 - tre2_1_0;
	       tim1_1_0 = tim0_1_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K923879532) * tre0_1_1) + (((FFTW_REAL) FFTW_K382683432) * tim0_1_1);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K923879532) * tim0_1_1) - (((FFTW_REAL) FFTW_K382683432) * tre0_1_1);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tre0_1_3) + (((FFTW_REAL) FFTW_K923879532) * tim0_1_3);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tim0_1_3) - (((FFTW_REAL) FFTW_K923879532) * tre0_1_3);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  c_re(out[ostride]) = tre1_0_0 + tre1_0_1;
	  c_im(out[ostride]) = tim1_0_0 + tim1_0_1;
	  c_re(out[9 * ostride]) = tre1_0_0 - tre1_0_1;
	  c_im(out[9 * ostride]) = tim1_0_0 - tim1_0_1;
	  c_re(out[5 * ostride]) = tre1_1_0 + tim1_1_1;
	  c_im(out[5 * ostride]) = tim1_1_0 - tre1_1_1;
	  c_re(out[13 * ostride]) = tre1_1_0 - tim1_1_1;
	  c_im(out[13 * ostride]) = tim1_1_0 + tre1_1_1;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  tre1_0_0 = tre0_2_0 + tim0_2_2;
	  tim1_0_0 = tim0_2_0 - tre0_2_2;
	  tre1_1_0 = tre0_2_0 - tim0_2_2;
	  tim1_1_0 = tim0_2_0 + tre0_2_2;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_2_1 + tim0_2_1);
	       tim2_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_2_1 - tre0_2_1);
	       tre2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_2_3 - tre0_2_3);
	       tim2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_2_3 + tre0_2_3);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 - tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 + tim2_1_0;
	  }
	  c_re(out[2 * ostride]) = tre1_0_0 + tre1_0_1;
	  c_im(out[2 * ostride]) = tim1_0_0 + tim1_0_1;
	  c_re(out[10 * ostride]) = tre1_0_0 - tre1_0_1;
	  c_im(out[10 * ostride]) = tim1_0_0 - tim1_0_1;
	  c_re(out[6 * ostride]) = tre1_1_0 + tim1_1_1;
	  c_im(out[6 * ostride]) = tim1_1_0 - tre1_1_1;
	  c_re(out[14 * ostride]) = tre1_1_0 - tim1_1_1;
	  c_im(out[14 * ostride]) = tim1_1_0 + tre1_1_1;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  {
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_3_2 - tre0_3_2);
	       tim2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_3_2 + tre0_3_2);
	       tre1_0_0 = tre0_3_0 + tre2_1_0;
	       tim1_0_0 = tim0_3_0 - tim2_1_0;
	       tre1_1_0 = tre0_3_0 - tre2_1_0;
	       tim1_1_0 = tim0_3_0 + tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K382683432) * tre0_3_1) + (((FFTW_REAL) FFTW_K923879532) * tim0_3_1);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K382683432) * tim0_3_1) - (((FFTW_REAL) FFTW_K923879532) * tre0_3_1);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K923879532) * tre0_3_3) + (((FFTW_REAL) FFTW_K382683432) * tim0_3_3);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tre0_3_3) - (((FFTW_REAL) FFTW_K923879532) * tim0_3_3);
	       tre1_0_1 = tre2_0_0 - tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 + tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  c_re(out[3 * ostride]) = tre1_0_0 + tre1_0_1;
	  c_im(out[3 * ostride]) = tim1_0_0 + tim1_0_1;
	  c_re(out[11 * ostride]) = tre1_0_0 - tre1_0_1;
	  c_im(out[11 * ostride]) = tim1_0_0 - tim1_0_1;
	  c_re(out[7 * ostride]) = tre1_1_0 + tim1_1_1;
	  c_im(out[7 * ostride]) = tim1_1_0 - tre1_1_1;
	  c_re(out[15 * ostride]) = tre1_1_0 - tim1_1_1;
	  c_im(out[15 * ostride]) = tim1_1_0 + tre1_1_1;
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 4 FP additions and 0 FP multiplications */

void fftw_no_twiddle_2(const FFTW_COMPLEX *in, FFTW_COMPLEX *out, int istride, int ostride)
{
     FFTW_REAL tre0_0_0;
     FFTW_REAL tim0_0_0;
     FFTW_REAL tre0_1_0;
     FFTW_REAL tim0_1_0;
     tre0_0_0 = c_re(in[0]);
     tim0_0_0 = c_im(in[0]);
     tre0_1_0 = c_re(in[istride]);
     tim0_1_0 = c_im(in[istride]);
     c_re(out[0]) = tre0_0_0 + tre0_1_0;
     c_im(out[0]) = tim0_0_0 + tim0_1_0;
     c_re(out[ostride]) = tre0_0_0 - tre0_1_0;
     c_im(out[ostride]) = tim0_0_0 - tim0_1_0;
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 14 FP additions and 4 FP multiplications */

void fftw_no_twiddle_3(const FFTW_COMPLEX *in, FFTW_COMPLEX *out, int istride, int ostride)
{
     FFTW_REAL tre0_0_0;
     FFTW_REAL tim0_0_0;
     FFTW_REAL tre0_1_0;
     FFTW_REAL tim0_1_0;
     FFTW_REAL tre0_2_0;
     FFTW_REAL tim0_2_0;
     tre0_0_0 = c_re(in[0]);
     tim0_0_0 = c_im(in[0]);
     tre0_1_0 = c_re(in[istride]);
     tim0_1_0 = c_im(in[istride]);
     tre0_2_0 = c_re(in[2 * istride]);
     tim0_2_0 = c_im(in[2 * istride]);
     c_re(out[0]) = tre0_0_0 + tre0_1_0 + tre0_2_0;
     c_im(out[0]) = tim0_0_0 + tim0_1_0 + tim0_2_0;
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tre1_1_0;
	  tre1_0_0 = tre0_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tre0_1_0 + tre0_2_0));
	  tre1_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tim0_1_0 - tim0_2_0);
	  c_re(out[ostride]) = tre1_0_0 + tre1_1_0;
	  c_re(out[2 * ostride]) = tre1_0_0 - tre1_1_0;
     }
     {
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tim1_1_0;
	  tim1_0_0 = tim0_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tim0_1_0 + tim0_2_0));
	  tim1_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tre0_2_0 - tre0_1_0);
	  c_im(out[ostride]) = tim1_0_0 + tim1_1_0;
	  c_im(out[2 * ostride]) = tim1_0_0 - tim1_1_0;
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 376 FP additions and 88 FP multiplications */

void fftw_no_twiddle_32(const FFTW_COMPLEX *in, FFTW_COMPLEX *out, int istride, int ostride)
{
     FFTW_REAL tre0_0_0;
     FFTW_REAL tim0_0_0;
     FFTW_REAL tre0_0_1;
     FFTW_REAL tim0_0_1;
     FFTW_REAL tre0_0_2;
     FFTW_REAL tim0_0_2;
     FFTW_REAL tre0_0_3;
     FFTW_REAL tim0_0_3;
     FFTW_REAL tre0_0_4;
     FFTW_REAL tim0_0_4;
     FFTW_REAL tre0_0_5;
     FFTW_REAL tim0_0_5;
     FFTW_REAL tre0_0_6;
     FFTW_REAL tim0_0_6;
     FFTW_REAL tre0_0_7;
     FFTW_REAL tim0_0_7;
     FFTW_REAL tre0_1_0;
     FFTW_REAL tim0_1_0;
     FFTW_REAL tre0_1_1;
     FFTW_REAL tim0_1_1;
     FFTW_REAL tre0_1_2;
     FFTW_REAL tim0_1_2;
     FFTW_REAL tre0_1_3;
     FFTW_REAL tim0_1_3;
     FFTW_REAL tre0_1_4;
     FFTW_REAL tim0_1_4;
     FFTW_REAL tre0_1_5;
     FFTW_REAL tim0_1_5;
     FFTW_REAL tre0_1_6;
     FFTW_REAL tim0_1_6;
     FFTW_REAL tre0_1_7;
     FFTW_REAL tim0_1_7;
     FFTW_REAL tre0_2_0;
     FFTW_REAL tim0_2_0;
     FFTW_REAL tre0_2_1;
     FFTW_REAL tim0_2_1;
     FFTW_REAL tre0_2_2;
     FFTW_REAL tim0_2_2;
     FFTW_REAL tre0_2_3;
     FFTW_REAL tim0_2_3;
     FFTW_REAL tre0_2_4;
     FFTW_REAL tim0_2_4;
     FFTW_REAL tre0_2_5;
     FFTW_REAL tim0_2_5;
     FFTW_REAL tre0_2_6;
     FFTW_REAL tim0_2_6;
     FFTW_REAL tre0_2_7;
     FFTW_REAL tim0_2_7;
     FFTW_REAL tre0_3_0;
     FFTW_REAL tim0_3_0;
     FFTW_REAL tre0_3_1;
     FFTW_REAL tim0_3_1;
     FFTW_REAL tre0_3_2;
     FFTW_REAL tim0_3_2;
     FFTW_REAL tre0_3_3;
     FFTW_REAL tim0_3_3;
     FFTW_REAL tre0_3_4;
     FFTW_REAL tim0_3_4;
     FFTW_REAL tre0_3_5;
     FFTW_REAL tim0_3_5;
     FFTW_REAL tre0_3_6;
     FFTW_REAL tim0_3_6;
     FFTW_REAL tre0_3_7;
     FFTW_REAL tim0_3_7;
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[0]);
	       tim2_0_0 = c_im(in[0]);
	       tre2_1_0 = c_re(in[16 * istride]);
	       tim2_1_0 = c_im(in[16 * istride]);
	       tre1_0_0 = tre2_0_0 + tre2_1_0;
	       tim1_0_0 = tim2_0_0 + tim2_1_0;
	       tre1_1_0 = tre2_0_0 - tre2_1_0;
	       tim1_1_0 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[8 * istride]);
	       tim2_0_0 = c_im(in[8 * istride]);
	       tre2_1_0 = c_re(in[24 * istride]);
	       tim2_1_0 = c_im(in[24 * istride]);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  tre0_0_0 = tre1_0_0 + tre1_0_1;
	  tim0_0_0 = tim1_0_0 + tim1_0_1;
	  tre0_2_0 = tre1_0_0 - tre1_0_1;
	  tim0_2_0 = tim1_0_0 - tim1_0_1;
	  tre0_1_0 = tre1_1_0 + tim1_1_1;
	  tim0_1_0 = tim1_1_0 - tre1_1_1;
	  tre0_3_0 = tre1_1_0 - tim1_1_1;
	  tim0_3_0 = tim1_1_0 + tre1_1_1;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[istride]);
	       tim2_0_0 = c_im(in[istride]);
	       tre2_1_0 = c_re(in[17 * istride]);
	       tim2_1_0 = c_im(in[17 * istride]);
	       tre1_0_0 = tre2_0_0 + tre2_1_0;
	       tim1_0_0 = tim2_0_0 + tim2_1_0;
	       tre1_1_0 = tre2_0_0 - tre2_1_0;
	       tim1_1_0 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[9 * istride]);
	       tim2_0_0 = c_im(in[9 * istride]);
	       tre2_1_0 = c_re(in[25 * istride]);
	       tim2_1_0 = c_im(in[25 * istride]);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  tre0_0_1 = tre1_0_0 + tre1_0_1;
	  tim0_0_1 = tim1_0_0 + tim1_0_1;
	  tre0_2_1 = tre1_0_0 - tre1_0_1;
	  tim0_2_1 = tim1_0_0 - tim1_0_1;
	  tre0_1_1 = tre1_1_0 + tim1_1_1;
	  tim0_1_1 = tim1_1_0 - tre1_1_1;
	  tre0_3_1 = tre1_1_0 - tim1_1_1;
	  tim0_3_1 = tim1_1_0 + tre1_1_1;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[2 * istride]);
	       tim2_0_0 = c_im(in[2 * istride]);
	       tre2_1_0 = c_re(in[18 * istride]);
	       tim2_1_0 = c_im(in[18 * istride]);
	       tre1_0_0 = tre2_0_0 + tre2_1_0;
	       tim1_0_0 = tim2_0_0 + tim2_1_0;
	       tre1_1_0 = tre2_0_0 - tre2_1_0;
	       tim1_1_0 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[10 * istride]);
	       tim2_0_0 = c_im(in[10 * istride]);
	       tre2_1_0 = c_re(in[26 * istride]);
	       tim2_1_0 = c_im(in[26 * istride]);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  tre0_0_2 = tre1_0_0 + tre1_0_1;
	  tim0_0_2 = tim1_0_0 + tim1_0_1;
	  tre0_2_2 = tre1_0_0 - tre1_0_1;
	  tim0_2_2 = tim1_0_0 - tim1_0_1;
	  tre0_1_2 = tre1_1_0 + tim1_1_1;
	  tim0_1_2 = tim1_1_0 - tre1_1_1;
	  tre0_3_2 = tre1_1_0 - tim1_1_1;
	  tim0_3_2 = tim1_1_0 + tre1_1_1;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[3 * istride]);
	       tim2_0_0 = c_im(in[3 * istride]);
	       tre2_1_0 = c_re(in[19 * istride]);
	       tim2_1_0 = c_im(in[19 * istride]);
	       tre1_0_0 = tre2_0_0 + tre2_1_0;
	       tim1_0_0 = tim2_0_0 + tim2_1_0;
	       tre1_1_0 = tre2_0_0 - tre2_1_0;
	       tim1_1_0 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[11 * istride]);
	       tim2_0_0 = c_im(in[11 * istride]);
	       tre2_1_0 = c_re(in[27 * istride]);
	       tim2_1_0 = c_im(in[27 * istride]);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  tre0_0_3 = tre1_0_0 + tre1_0_1;
	  tim0_0_3 = tim1_0_0 + tim1_0_1;
	  tre0_2_3 = tre1_0_0 - tre1_0_1;
	  tim0_2_3 = tim1_0_0 - tim1_0_1;
	  tre0_1_3 = tre1_1_0 + tim1_1_1;
	  tim0_1_3 = tim1_1_0 - tre1_1_1;
	  tre0_3_3 = tre1_1_0 - tim1_1_1;
	  tim0_3_3 = tim1_1_0 + tre1_1_1;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[4 * istride]);
	       tim2_0_0 = c_im(in[4 * istride]);
	       tre2_1_0 = c_re(in[20 * istride]);
	       tim2_1_0 = c_im(in[20 * istride]);
	       tre1_0_0 = tre2_0_0 + tre2_1_0;
	       tim1_0_0 = tim2_0_0 + tim2_1_0;
	       tre1_1_0 = tre2_0_0 - tre2_1_0;
	       tim1_1_0 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[12 * istride]);
	       tim2_0_0 = c_im(in[12 * istride]);
	       tre2_1_0 = c_re(in[28 * istride]);
	       tim2_1_0 = c_im(in[28 * istride]);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  tre0_0_4 = tre1_0_0 + tre1_0_1;
	  tim0_0_4 = tim1_0_0 + tim1_0_1;
	  tre0_2_4 = tre1_0_0 - tre1_0_1;
	  tim0_2_4 = tim1_0_0 - tim1_0_1;
	  tre0_1_4 = tre1_1_0 + tim1_1_1;
	  tim0_1_4 = tim1_1_0 - tre1_1_1;
	  tre0_3_4 = tre1_1_0 - tim1_1_1;
	  tim0_3_4 = tim1_1_0 + tre1_1_1;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[5 * istride]);
	       tim2_0_0 = c_im(in[5 * istride]);
	       tre2_1_0 = c_re(in[21 * istride]);
	       tim2_1_0 = c_im(in[21 * istride]);
	       tre1_0_0 = tre2_0_0 + tre2_1_0;
	       tim1_0_0 = tim2_0_0 + tim2_1_0;
	       tre1_1_0 = tre2_0_0 - tre2_1_0;
	       tim1_1_0 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[13 * istride]);
	       tim2_0_0 = c_im(in[13 * istride]);
	       tre2_1_0 = c_re(in[29 * istride]);
	       tim2_1_0 = c_im(in[29 * istride]);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  tre0_0_5 = tre1_0_0 + tre1_0_1;
	  tim0_0_5 = tim1_0_0 + tim1_0_1;
	  tre0_2_5 = tre1_0_0 - tre1_0_1;
	  tim0_2_5 = tim1_0_0 - tim1_0_1;
	  tre0_1_5 = tre1_1_0 + tim1_1_1;
	  tim0_1_5 = tim1_1_0 - tre1_1_1;
	  tre0_3_5 = tre1_1_0 - tim1_1_1;
	  tim0_3_5 = tim1_1_0 + tre1_1_1;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[6 * istride]);
	       tim2_0_0 = c_im(in[6 * istride]);
	       tre2_1_0 = c_re(in[22 * istride]);
	       tim2_1_0 = c_im(in[22 * istride]);
	       tre1_0_0 = tre2_0_0 + tre2_1_0;
	       tim1_0_0 = tim2_0_0 + tim2_1_0;
	       tre1_1_0 = tre2_0_0 - tre2_1_0;
	       tim1_1_0 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[14 * istride]);
	       tim2_0_0 = c_im(in[14 * istride]);
	       tre2_1_0 = c_re(in[30 * istride]);
	       tim2_1_0 = c_im(in[30 * istride]);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  tre0_0_6 = tre1_0_0 + tre1_0_1;
	  tim0_0_6 = tim1_0_0 + tim1_0_1;
	  tre0_2_6 = tre1_0_0 - tre1_0_1;
	  tim0_2_6 = tim1_0_0 - tim1_0_1;
	  tre0_1_6 = tre1_1_0 + tim1_1_1;
	  tim0_1_6 = tim1_1_0 - tre1_1_1;
	  tre0_3_6 = tre1_1_0 - tim1_1_1;
	  tim0_3_6 = tim1_1_0 + tre1_1_1;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[7 * istride]);
	       tim2_0_0 = c_im(in[7 * istride]);
	       tre2_1_0 = c_re(in[23 * istride]);
	       tim2_1_0 = c_im(in[23 * istride]);
	       tre1_0_0 = tre2_0_0 + tre2_1_0;
	       tim1_0_0 = tim2_0_0 + tim2_1_0;
	       tre1_1_0 = tre2_0_0 - tre2_1_0;
	       tim1_1_0 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[15 * istride]);
	       tim2_0_0 = c_im(in[15 * istride]);
	       tre2_1_0 = c_re(in[31 * istride]);
	       tim2_1_0 = c_im(in[31 * istride]);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  tre0_0_7 = tre1_0_0 + tre1_0_1;
	  tim0_0_7 = tim1_0_0 + tim1_0_1;
	  tre0_2_7 = tre1_0_0 - tre1_0_1;
	  tim0_2_7 = tim1_0_0 - tim1_0_1;
	  tre0_1_7 = tre1_1_0 + tim1_1_1;
	  tim0_1_7 = tim1_1_0 - tre1_1_1;
	  tre0_3_7 = tre1_1_0 - tim1_1_1;
	  tim0_3_7 = tim1_1_0 + tre1_1_1;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_0_2;
	  FFTW_REAL tim1_0_2;
	  FFTW_REAL tre1_0_3;
	  FFTW_REAL tim1_0_3;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  FFTW_REAL tre1_1_2;
	  FFTW_REAL tim1_1_2;
	  FFTW_REAL tre1_1_3;
	  FFTW_REAL tim1_1_3;
	  tre1_0_0 = tre0_0_0 + tre0_0_4;
	  tim1_0_0 = tim0_0_0 + tim0_0_4;
	  tre1_1_0 = tre0_0_0 - tre0_0_4;
	  tim1_1_0 = tim0_0_0 - tim0_0_4;
	  tre1_0_1 = tre0_0_1 + tre0_0_5;
	  tim1_0_1 = tim0_0_1 + tim0_0_5;
	  tre1_1_1 = tre0_0_1 - tre0_0_5;
	  tim1_1_1 = tim0_0_1 - tim0_0_5;
	  tre1_0_2 = tre0_0_2 + tre0_0_6;
	  tim1_0_2 = tim0_0_2 + tim0_0_6;
	  tre1_1_2 = tre0_0_2 - tre0_0_6;
	  tim1_1_2 = tim0_0_2 - tim0_0_6;
	  tre1_0_3 = tre0_0_3 + tre0_0_7;
	  tim1_0_3 = tim0_0_3 + tim0_0_7;
	  tre1_1_3 = tre0_0_3 - tre0_0_7;
	  tim1_1_3 = tim0_0_3 - tim0_0_7;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_0_0 + tre1_0_2;
	       tim2_0_0 = tim1_0_0 + tim1_0_2;
	       tre2_1_0 = tre1_0_0 - tre1_0_2;
	       tim2_1_0 = tim1_0_0 - tim1_0_2;
	       tre2_0_1 = tre1_0_1 + tre1_0_3;
	       tim2_0_1 = tim1_0_1 + tim1_0_3;
	       tre2_1_1 = tre1_0_1 - tre1_0_3;
	       tim2_1_1 = tim1_0_1 - tim1_0_3;
	       c_re(out[0]) = tre2_0_0 + tre2_0_1;
	       c_im(out[0]) = tim2_0_0 + tim2_0_1;
	       c_re(out[16 * ostride]) = tre2_0_0 - tre2_0_1;
	       c_im(out[16 * ostride]) = tim2_0_0 - tim2_0_1;
	       c_re(out[8 * ostride]) = tre2_1_0 + tim2_1_1;
	       c_im(out[8 * ostride]) = tim2_1_0 - tre2_1_1;
	       c_re(out[24 * ostride]) = tre2_1_0 - tim2_1_1;
	       c_im(out[24 * ostride]) = tim2_1_0 + tre2_1_1;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_1_0 + tim1_1_2;
	       tim2_0_0 = tim1_1_0 - tre1_1_2;
	       tre2_1_0 = tre1_1_0 - tim1_1_2;
	       tim2_1_0 = tim1_1_0 + tre1_1_2;
	       {
		    FFTW_REAL tre3_0_0;
		    FFTW_REAL tim3_0_0;
		    FFTW_REAL tre3_1_0;
		    FFTW_REAL tim3_1_0;
		    tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 + tim1_1_1);
		    tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 - tre1_1_1);
		    tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 - tre1_1_3);
		    tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 + tre1_1_3);
		    tre2_0_1 = tre3_0_0 + tre3_1_0;
		    tim2_0_1 = tim3_0_0 - tim3_1_0;
		    tre2_1_1 = tre3_0_0 - tre3_1_0;
		    tim2_1_1 = tim3_0_0 + tim3_1_0;
	       }
	       c_re(out[4 * ostride]) = tre2_0_0 + tre2_0_1;
	       c_im(out[4 * ostride]) = tim2_0_0 + tim2_0_1;
	       c_re(out[20 * ostride]) = tre2_0_0 - tre2_0_1;
	       c_im(out[20 * ostride]) = tim2_0_0 - tim2_0_1;
	       c_re(out[12 * ostride]) = tre2_1_0 + tim2_1_1;
	       c_im(out[12 * ostride]) = tim2_1_0 - tre2_1_1;
	       c_re(out[28 * ostride]) = tre2_1_0 - tim2_1_1;
	       c_im(out[28 * ostride]) = tim2_1_0 + tre2_1_1;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_0_2;
	  FFTW_REAL tim1_0_2;
	  FFTW_REAL tre1_0_3;
	  FFTW_REAL tim1_0_3;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  FFTW_REAL tre1_1_2;
	  FFTW_REAL tim1_1_2;
	  FFTW_REAL tre1_1_3;
	  FFTW_REAL tim1_1_3;
	  {
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_1_4 + tim0_1_4);
	       tim2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_1_4 - tre0_1_4);
	       tre1_0_0 = tre0_1_0 + tre2_1_0;
	       tim1_0_0 = tim0_1_0 + tim2_1_0;
	       tre1_1_0 = tre0_1_0 - tre2_1_0;
	       tim1_1_0 = tim0_1_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K980785280) * tre0_1_1) + (((FFTW_REAL) FFTW_K195090322) * tim0_1_1);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K980785280) * tim0_1_1) - (((FFTW_REAL) FFTW_K195090322) * tre0_1_1);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K555570233) * tre0_1_5) + (((FFTW_REAL) FFTW_K831469612) * tim0_1_5);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K555570233) * tim0_1_5) - (((FFTW_REAL) FFTW_K831469612) * tre0_1_5);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K923879532) * tre0_1_2) + (((FFTW_REAL) FFTW_K382683432) * tim0_1_2);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K923879532) * tim0_1_2) - (((FFTW_REAL) FFTW_K382683432) * tre0_1_2);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tre0_1_6) + (((FFTW_REAL) FFTW_K923879532) * tim0_1_6);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tim0_1_6) - (((FFTW_REAL) FFTW_K923879532) * tre0_1_6);
	       tre1_0_2 = tre2_0_0 + tre2_1_0;
	       tim1_0_2 = tim2_0_0 + tim2_1_0;
	       tre1_1_2 = tre2_0_0 - tre2_1_0;
	       tim1_1_2 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K831469612) * tre0_1_3) + (((FFTW_REAL) FFTW_K555570233) * tim0_1_3);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K831469612) * tim0_1_3) - (((FFTW_REAL) FFTW_K555570233) * tre0_1_3);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K195090322) * tre0_1_7) + (((FFTW_REAL) FFTW_K980785280) * tim0_1_7);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K195090322) * tim0_1_7) - (((FFTW_REAL) FFTW_K980785280) * tre0_1_7);
	       tre1_0_3 = tre2_0_0 + tre2_1_0;
	       tim1_0_3 = tim2_0_0 + tim2_1_0;
	       tre1_1_3 = tre2_0_0 - tre2_1_0;
	       tim1_1_3 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_0_0 + tre1_0_2;
	       tim2_0_0 = tim1_0_0 + tim1_0_2;
	       tre2_1_0 = tre1_0_0 - tre1_0_2;
	       tim2_1_0 = tim1_0_0 - tim1_0_2;
	       tre2_0_1 = tre1_0_1 + tre1_0_3;
	       tim2_0_1 = tim1_0_1 + tim1_0_3;
	       tre2_1_1 = tre1_0_1 - tre1_0_3;
	       tim2_1_1 = tim1_0_1 - tim1_0_3;
	       c_re(out[ostride]) = tre2_0_0 + tre2_0_1;
	       c_im(out[ostride]) = tim2_0_0 + tim2_0_1;
	       c_re(out[17 * ostride]) = tre2_0_0 - tre2_0_1;
	       c_im(out[17 * ostride]) = tim2_0_0 - tim2_0_1;
	       c_re(out[9 * ostride]) = tre2_1_0 + tim2_1_1;
	       c_im(out[9 * ostride]) = tim2_1_0 - tre2_1_1;
	       c_re(out[25 * ostride]) = tre2_1_0 - tim2_1_1;
	       c_im(out[25 * ostride]) = tim2_1_0 + tre2_1_1;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_1_0 + tim1_1_2;
	       tim2_0_0 = tim1_1_0 - tre1_1_2;
	       tre2_1_0 = tre1_1_0 - tim1_1_2;
	       tim2_1_0 = tim1_1_0 + tre1_1_2;
	       {
		    FFTW_REAL tre3_0_0;
		    FFTW_REAL tim3_0_0;
		    FFTW_REAL tre3_1_0;
		    FFTW_REAL tim3_1_0;
		    tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 + tim1_1_1);
		    tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 - tre1_1_1);
		    tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 - tre1_1_3);
		    tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 + tre1_1_3);
		    tre2_0_1 = tre3_0_0 + tre3_1_0;
		    tim2_0_1 = tim3_0_0 - tim3_1_0;
		    tre2_1_1 = tre3_0_0 - tre3_1_0;
		    tim2_1_1 = tim3_0_0 + tim3_1_0;
	       }
	       c_re(out[5 * ostride]) = tre2_0_0 + tre2_0_1;
	       c_im(out[5 * ostride]) = tim2_0_0 + tim2_0_1;
	       c_re(out[21 * ostride]) = tre2_0_0 - tre2_0_1;
	       c_im(out[21 * ostride]) = tim2_0_0 - tim2_0_1;
	       c_re(out[13 * ostride]) = tre2_1_0 + tim2_1_1;
	       c_im(out[13 * ostride]) = tim2_1_0 - tre2_1_1;
	       c_re(out[29 * ostride]) = tre2_1_0 - tim2_1_1;
	       c_im(out[29 * ostride]) = tim2_1_0 + tre2_1_1;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_0_2;
	  FFTW_REAL tim1_0_2;
	  FFTW_REAL tre1_0_3;
	  FFTW_REAL tim1_0_3;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  FFTW_REAL tre1_1_2;
	  FFTW_REAL tim1_1_2;
	  FFTW_REAL tre1_1_3;
	  FFTW_REAL tim1_1_3;
	  tre1_0_0 = tre0_2_0 + tim0_2_4;
	  tim1_0_0 = tim0_2_0 - tre0_2_4;
	  tre1_1_0 = tre0_2_0 - tim0_2_4;
	  tim1_1_0 = tim0_2_0 + tre0_2_4;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K923879532) * tre0_2_1) + (((FFTW_REAL) FFTW_K382683432) * tim0_2_1);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K923879532) * tim0_2_1) - (((FFTW_REAL) FFTW_K382683432) * tre0_2_1);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K923879532) * tim0_2_5) - (((FFTW_REAL) FFTW_K382683432) * tre0_2_5);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tim0_2_5) + (((FFTW_REAL) FFTW_K923879532) * tre0_2_5);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 - tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 + tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_2_2 + tim0_2_2);
	       tim2_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_2_2 - tre0_2_2);
	       tre2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_2_6 - tre0_2_6);
	       tim2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_2_6 + tre0_2_6);
	       tre1_0_2 = tre2_0_0 + tre2_1_0;
	       tim1_0_2 = tim2_0_0 - tim2_1_0;
	       tre1_1_2 = tre2_0_0 - tre2_1_0;
	       tim1_1_2 = tim2_0_0 + tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K382683432) * tre0_2_3) + (((FFTW_REAL) FFTW_K923879532) * tim0_2_3);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K382683432) * tim0_2_3) - (((FFTW_REAL) FFTW_K923879532) * tre0_2_3);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tim0_2_7) - (((FFTW_REAL) FFTW_K923879532) * tre0_2_7);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K923879532) * tim0_2_7) + (((FFTW_REAL) FFTW_K382683432) * tre0_2_7);
	       tre1_0_3 = tre2_0_0 + tre2_1_0;
	       tim1_0_3 = tim2_0_0 - tim2_1_0;
	       tre1_1_3 = tre2_0_0 - tre2_1_0;
	       tim1_1_3 = tim2_0_0 + tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_0_0 + tre1_0_2;
	       tim2_0_0 = tim1_0_0 + tim1_0_2;
	       tre2_1_0 = tre1_0_0 - tre1_0_2;
	       tim2_1_0 = tim1_0_0 - tim1_0_2;
	       tre2_0_1 = tre1_0_1 + tre1_0_3;
	       tim2_0_1 = tim1_0_1 + tim1_0_3;
	       tre2_1_1 = tre1_0_1 - tre1_0_3;
	       tim2_1_1 = tim1_0_1 - tim1_0_3;
	       c_re(out[2 * ostride]) = tre2_0_0 + tre2_0_1;
	       c_im(out[2 * ostride]) = tim2_0_0 + tim2_0_1;
	       c_re(out[18 * ostride]) = tre2_0_0 - tre2_0_1;
	       c_im(out[18 * ostride]) = tim2_0_0 - tim2_0_1;
	       c_re(out[10 * ostride]) = tre2_1_0 + tim2_1_1;
	       c_im(out[10 * ostride]) = tim2_1_0 - tre2_1_1;
	       c_re(out[26 * ostride]) = tre2_1_0 - tim2_1_1;
	       c_im(out[26 * ostride]) = tim2_1_0 + tre2_1_1;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_1_0 + tim1_1_2;
	       tim2_0_0 = tim1_1_0 - tre1_1_2;
	       tre2_1_0 = tre1_1_0 - tim1_1_2;
	       tim2_1_0 = tim1_1_0 + tre1_1_2;
	       {
		    FFTW_REAL tre3_0_0;
		    FFTW_REAL tim3_0_0;
		    FFTW_REAL tre3_1_0;
		    FFTW_REAL tim3_1_0;
		    tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 + tim1_1_1);
		    tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 - tre1_1_1);
		    tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 - tre1_1_3);
		    tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 + tre1_1_3);
		    tre2_0_1 = tre3_0_0 + tre3_1_0;
		    tim2_0_1 = tim3_0_0 - tim3_1_0;
		    tre2_1_1 = tre3_0_0 - tre3_1_0;
		    tim2_1_1 = tim3_0_0 + tim3_1_0;
	       }
	       c_re(out[6 * ostride]) = tre2_0_0 + tre2_0_1;
	       c_im(out[6 * ostride]) = tim2_0_0 + tim2_0_1;
	       c_re(out[22 * ostride]) = tre2_0_0 - tre2_0_1;
	       c_im(out[22 * ostride]) = tim2_0_0 - tim2_0_1;
	       c_re(out[14 * ostride]) = tre2_1_0 + tim2_1_1;
	       c_im(out[14 * ostride]) = tim2_1_0 - tre2_1_1;
	       c_re(out[30 * ostride]) = tre2_1_0 - tim2_1_1;
	       c_im(out[30 * ostride]) = tim2_1_0 + tre2_1_1;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_0_2;
	  FFTW_REAL tim1_0_2;
	  FFTW_REAL tre1_0_3;
	  FFTW_REAL tim1_0_3;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  FFTW_REAL tre1_1_2;
	  FFTW_REAL tim1_1_2;
	  FFTW_REAL tre1_1_3;
	  FFTW_REAL tim1_1_3;
	  {
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_3_4 - tre0_3_4);
	       tim2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_3_4 + tre0_3_4);
	       tre1_0_0 = tre0_3_0 + tre2_1_0;
	       tim1_0_0 = tim0_3_0 - tim2_1_0;
	       tre1_1_0 = tre0_3_0 - tre2_1_0;
	       tim1_1_0 = tim0_3_0 + tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K831469612) * tre0_3_1) + (((FFTW_REAL) FFTW_K555570233) * tim0_3_1);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K831469612) * tim0_3_1) - (((FFTW_REAL) FFTW_K555570233) * tre0_3_1);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K195090322) * tim0_3_5) - (((FFTW_REAL) FFTW_K980785280) * tre0_3_5);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K980785280) * tim0_3_5) + (((FFTW_REAL) FFTW_K195090322) * tre0_3_5);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 - tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 + tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K382683432) * tre0_3_2) + (((FFTW_REAL) FFTW_K923879532) * tim0_3_2);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K382683432) * tim0_3_2) - (((FFTW_REAL) FFTW_K923879532) * tre0_3_2);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K923879532) * tre0_3_6) + (((FFTW_REAL) FFTW_K382683432) * tim0_3_6);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tre0_3_6) - (((FFTW_REAL) FFTW_K923879532) * tim0_3_6);
	       tre1_0_2 = tre2_0_0 - tre2_1_0;
	       tim1_0_2 = tim2_0_0 + tim2_1_0;
	       tre1_1_2 = tre2_0_0 + tre2_1_0;
	       tim1_1_2 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K980785280) * tim0_3_3) - (((FFTW_REAL) FFTW_K195090322) * tre0_3_3);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K195090322) * tim0_3_3) + (((FFTW_REAL) FFTW_K980785280) * tre0_3_3);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K555570233) * tre0_3_7) + (((FFTW_REAL) FFTW_K831469612) * tim0_3_7);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K831469612) * tre0_3_7) - (((FFTW_REAL) FFTW_K555570233) * tim0_3_7);
	       tre1_0_3 = tre2_0_0 - tre2_1_0;
	       tim1_0_3 = tim2_1_0 - tim2_0_0;
	       tre1_1_3 = tre2_0_0 + tre2_1_0;
	       tim1_1_3 = (-(tim2_0_0 + tim2_1_0));
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_0_0 + tre1_0_2;
	       tim2_0_0 = tim1_0_0 + tim1_0_2;
	       tre2_1_0 = tre1_0_0 - tre1_0_2;
	       tim2_1_0 = tim1_0_0 - tim1_0_2;
	       tre2_0_1 = tre1_0_1 + tre1_0_3;
	       tim2_0_1 = tim1_0_1 + tim1_0_3;
	       tre2_1_1 = tre1_0_1 - tre1_0_3;
	       tim2_1_1 = tim1_0_1 - tim1_0_3;
	       c_re(out[3 * ostride]) = tre2_0_0 + tre2_0_1;
	       c_im(out[3 * ostride]) = tim2_0_0 + tim2_0_1;
	       c_re(out[19 * ostride]) = tre2_0_0 - tre2_0_1;
	       c_im(out[19 * ostride]) = tim2_0_0 - tim2_0_1;
	       c_re(out[11 * ostride]) = tre2_1_0 + tim2_1_1;
	       c_im(out[11 * ostride]) = tim2_1_0 - tre2_1_1;
	       c_re(out[27 * ostride]) = tre2_1_0 - tim2_1_1;
	       c_im(out[27 * ostride]) = tim2_1_0 + tre2_1_1;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_1_0 + tim1_1_2;
	       tim2_0_0 = tim1_1_0 - tre1_1_2;
	       tre2_1_0 = tre1_1_0 - tim1_1_2;
	       tim2_1_0 = tim1_1_0 + tre1_1_2;
	       {
		    FFTW_REAL tre3_0_0;
		    FFTW_REAL tim3_0_0;
		    FFTW_REAL tre3_1_0;
		    FFTW_REAL tim3_1_0;
		    tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 + tim1_1_1);
		    tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 - tre1_1_1);
		    tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 - tre1_1_3);
		    tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 + tre1_1_3);
		    tre2_0_1 = tre3_0_0 + tre3_1_0;
		    tim2_0_1 = tim3_0_0 - tim3_1_0;
		    tre2_1_1 = tre3_0_0 - tre3_1_0;
		    tim2_1_1 = tim3_0_0 + tim3_1_0;
	       }
	       c_re(out[7 * ostride]) = tre2_0_0 + tre2_0_1;
	       c_im(out[7 * ostride]) = tim2_0_0 + tim2_0_1;
	       c_re(out[23 * ostride]) = tre2_0_0 - tre2_0_1;
	       c_im(out[23 * ostride]) = tim2_0_0 - tim2_0_1;
	       c_re(out[15 * ostride]) = tre2_1_0 + tim2_1_1;
	       c_im(out[15 * ostride]) = tim2_1_0 - tre2_1_1;
	       c_re(out[31 * ostride]) = tre2_1_0 - tim2_1_1;
	       c_im(out[31 * ostride]) = tim2_1_0 + tre2_1_1;
	  }
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 16 FP additions and 0 FP multiplications */

void fftw_no_twiddle_4(const FFTW_COMPLEX *in, FFTW_COMPLEX *out, int istride, int ostride)
{
     FFTW_REAL tre0_0_0;
     FFTW_REAL tim0_0_0;
     FFTW_REAL tre0_0_1;
     FFTW_REAL tim0_0_1;
     FFTW_REAL tre0_1_0;
     FFTW_REAL tim0_1_0;
     FFTW_REAL tre0_1_1;
     FFTW_REAL tim0_1_1;
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  tre1_0_0 = c_re(in[0]);
	  tim1_0_0 = c_im(in[0]);
	  tre1_1_0 = c_re(in[2 * istride]);
	  tim1_1_0 = c_im(in[2 * istride]);
	  tre0_0_0 = tre1_0_0 + tre1_1_0;
	  tim0_0_0 = tim1_0_0 + tim1_1_0;
	  tre0_1_0 = tre1_0_0 - tre1_1_0;
	  tim0_1_0 = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  tre1_0_0 = c_re(in[istride]);
	  tim1_0_0 = c_im(in[istride]);
	  tre1_1_0 = c_re(in[3 * istride]);
	  tim1_1_0 = c_im(in[3 * istride]);
	  tre0_0_1 = tre1_0_0 + tre1_1_0;
	  tim0_0_1 = tim1_0_0 + tim1_1_0;
	  tre0_1_1 = tre1_0_0 - tre1_1_0;
	  tim0_1_1 = tim1_0_0 - tim1_1_0;
     }
     c_re(out[0]) = tre0_0_0 + tre0_0_1;
     c_im(out[0]) = tim0_0_0 + tim0_0_1;
     c_re(out[2 * ostride]) = tre0_0_0 - tre0_0_1;
     c_im(out[2 * ostride]) = tim0_0_0 - tim0_0_1;
     c_re(out[ostride]) = tre0_1_0 + tim0_1_1;
     c_im(out[ostride]) = tim0_1_0 - tre0_1_1;
     c_re(out[3 * ostride]) = tre0_1_0 - tim0_1_1;
     c_im(out[3 * ostride]) = tim0_1_0 + tre0_1_1;
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 44 FP additions and 16 FP multiplications */

void fftw_no_twiddle_5(const FFTW_COMPLEX *in, FFTW_COMPLEX *out, int istride, int ostride)
{
     FFTW_REAL tre0_0_0;
     FFTW_REAL tim0_0_0;
     FFTW_REAL tre0_1_0;
     FFTW_REAL tim0_1_0;
     FFTW_REAL tre0_2_0;
     FFTW_REAL tim0_2_0;
     FFTW_REAL tre0_3_0;
     FFTW_REAL tim0_3_0;
     FFTW_REAL tre0_4_0;
     FFTW_REAL tim0_4_0;
     tre0_0_0 = c_re(in[0]);
     tim0_0_0 = c_im(in[0]);
     tre0_1_0 = c_re(in[istride]);
     tim0_1_0 = c_im(in[istride]);
     tre0_2_0 = c_re(in[2 * istride]);
     tim0_2_0 = c_im(in[2 * istride]);
     tre0_3_0 = c_re(in[3 * istride]);
     tim0_3_0 = c_im(in[3 * istride]);
     tre0_4_0 = c_re(in[4 * istride]);
     tim0_4_0 = c_im(in[4 * istride]);
     c_re(out[0]) = tre0_0_0 + tre0_1_0 + tre0_2_0 + tre0_3_0 + tre0_4_0;
     c_im(out[0]) = tim0_0_0 + tim0_1_0 + tim0_2_0 + tim0_3_0 + tim0_4_0;
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tre1_1_0;
	  tre1_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K309016994) * (tre0_1_0 + tre0_4_0)) - (((FFTW_REAL) FFTW_K809016994) * (tre0_2_0 + tre0_3_0));
	  tre1_1_0 = (((FFTW_REAL) FFTW_K951056516) * (tim0_1_0 - tim0_4_0)) + (((FFTW_REAL) FFTW_K587785252) * (tim0_2_0 - tim0_3_0));
	  c_re(out[ostride]) = tre1_0_0 + tre1_1_0;
	  c_re(out[4 * ostride]) = tre1_0_0 - tre1_1_0;
     }
     {
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tim1_1_0;
	  tim1_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K309016994) * (tim0_1_0 + tim0_4_0)) - (((FFTW_REAL) FFTW_K809016994) * (tim0_2_0 + tim0_3_0));
	  tim1_1_0 = (((FFTW_REAL) FFTW_K951056516) * (tre0_4_0 - tre0_1_0)) + (((FFTW_REAL) FFTW_K587785252) * (tre0_3_0 - tre0_2_0));
	  c_im(out[ostride]) = tim1_0_0 + tim1_1_0;
	  c_im(out[4 * ostride]) = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tre1_1_0;
	  tre1_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K309016994) * (tre0_2_0 + tre0_3_0)) - (((FFTW_REAL) FFTW_K809016994) * (tre0_1_0 + tre0_4_0));
	  tre1_1_0 = (((FFTW_REAL) FFTW_K587785252) * (tim0_1_0 - tim0_4_0)) + (((FFTW_REAL) FFTW_K951056516) * (tim0_3_0 - tim0_2_0));
	  c_re(out[2 * ostride]) = tre1_0_0 + tre1_1_0;
	  c_re(out[3 * ostride]) = tre1_0_0 - tre1_1_0;
     }
     {
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tim1_1_0;
	  tim1_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K309016994) * (tim0_2_0 + tim0_3_0)) - (((FFTW_REAL) FFTW_K809016994) * (tim0_1_0 + tim0_4_0));
	  tim1_1_0 = (((FFTW_REAL) FFTW_K587785252) * (tre0_4_0 - tre0_1_0)) + (((FFTW_REAL) FFTW_K951056516) * (tre0_2_0 - tre0_3_0));
	  c_im(out[2 * ostride]) = tim1_0_0 + tim1_1_0;
	  c_im(out[3 * ostride]) = tim1_0_0 - tim1_1_0;
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 40 FP additions and 8 FP multiplications */

void fftw_no_twiddle_6(const FFTW_COMPLEX *in, FFTW_COMPLEX *out, int istride, int ostride)
{
     FFTW_REAL tre0_0_0;
     FFTW_REAL tim0_0_0;
     FFTW_REAL tre0_0_1;
     FFTW_REAL tim0_0_1;
     FFTW_REAL tre0_0_2;
     FFTW_REAL tim0_0_2;
     FFTW_REAL tre0_1_0;
     FFTW_REAL tim0_1_0;
     FFTW_REAL tre0_1_1;
     FFTW_REAL tim0_1_1;
     FFTW_REAL tre0_1_2;
     FFTW_REAL tim0_1_2;
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  tre1_0_0 = c_re(in[0]);
	  tim1_0_0 = c_im(in[0]);
	  tre1_1_0 = c_re(in[3 * istride]);
	  tim1_1_0 = c_im(in[3 * istride]);
	  tre0_0_0 = tre1_0_0 + tre1_1_0;
	  tim0_0_0 = tim1_0_0 + tim1_1_0;
	  tre0_1_0 = tre1_0_0 - tre1_1_0;
	  tim0_1_0 = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  tre1_0_0 = c_re(in[2 * istride]);
	  tim1_0_0 = c_im(in[2 * istride]);
	  tre1_1_0 = c_re(in[5 * istride]);
	  tim1_1_0 = c_im(in[5 * istride]);
	  tre0_0_1 = tre1_0_0 + tre1_1_0;
	  tim0_0_1 = tim1_0_0 + tim1_1_0;
	  tre0_1_1 = tre1_0_0 - tre1_1_0;
	  tim0_1_1 = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  tre1_0_0 = c_re(in[4 * istride]);
	  tim1_0_0 = c_im(in[4 * istride]);
	  tre1_1_0 = c_re(in[istride]);
	  tim1_1_0 = c_im(in[istride]);
	  tre0_0_2 = tre1_0_0 + tre1_1_0;
	  tim0_0_2 = tim1_0_0 + tim1_1_0;
	  tre0_1_2 = tre1_0_0 - tre1_1_0;
	  tim0_1_2 = tim1_0_0 - tim1_1_0;
     }
     c_re(out[0]) = tre0_0_0 + tre0_0_1 + tre0_0_2;
     c_im(out[0]) = tim0_0_0 + tim0_0_1 + tim0_0_2;
     {
	  FFTW_REAL tre2_0_0;
	  FFTW_REAL tre2_1_0;
	  tre2_0_0 = tre0_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tre0_0_1 + tre0_0_2));
	  tre2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tim0_0_1 - tim0_0_2);
	  c_re(out[4 * ostride]) = tre2_0_0 + tre2_1_0;
	  c_re(out[2 * ostride]) = tre2_0_0 - tre2_1_0;
     }
     {
	  FFTW_REAL tim2_0_0;
	  FFTW_REAL tim2_1_0;
	  tim2_0_0 = tim0_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tim0_0_1 + tim0_0_2));
	  tim2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tre0_0_2 - tre0_0_1);
	  c_im(out[4 * ostride]) = tim2_0_0 + tim2_1_0;
	  c_im(out[2 * ostride]) = tim2_0_0 - tim2_1_0;
     }
     c_re(out[3 * ostride]) = tre0_1_0 + tre0_1_1 + tre0_1_2;
     c_im(out[3 * ostride]) = tim0_1_0 + tim0_1_1 + tim0_1_2;
     {
	  FFTW_REAL tre2_0_0;
	  FFTW_REAL tre2_1_0;
	  tre2_0_0 = tre0_1_0 - (((FFTW_REAL) FFTW_K499999999) * (tre0_1_1 + tre0_1_2));
	  tre2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tim0_1_1 - tim0_1_2);
	  c_re(out[ostride]) = tre2_0_0 + tre2_1_0;
	  c_re(out[5 * ostride]) = tre2_0_0 - tre2_1_0;
     }
     {
	  FFTW_REAL tim2_0_0;
	  FFTW_REAL tim2_1_0;
	  tim2_0_0 = tim0_1_0 - (((FFTW_REAL) FFTW_K499999999) * (tim0_1_1 + tim0_1_2));
	  tim2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tre0_1_2 - tre0_1_1);
	  c_im(out[ostride]) = tim2_0_0 + tim2_1_0;
	  c_im(out[5 * ostride]) = tim2_0_0 - tim2_1_0;
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 928 FP additions and 248 FP multiplications */

void fftw_no_twiddle_64(const FFTW_COMPLEX *in, FFTW_COMPLEX *out, int istride, int ostride)
{
     FFTW_REAL tre0_0_0;
     FFTW_REAL tim0_0_0;
     FFTW_REAL tre0_0_1;
     FFTW_REAL tim0_0_1;
     FFTW_REAL tre0_0_2;
     FFTW_REAL tim0_0_2;
     FFTW_REAL tre0_0_3;
     FFTW_REAL tim0_0_3;
     FFTW_REAL tre0_0_4;
     FFTW_REAL tim0_0_4;
     FFTW_REAL tre0_0_5;
     FFTW_REAL tim0_0_5;
     FFTW_REAL tre0_0_6;
     FFTW_REAL tim0_0_6;
     FFTW_REAL tre0_0_7;
     FFTW_REAL tim0_0_7;
     FFTW_REAL tre0_1_0;
     FFTW_REAL tim0_1_0;
     FFTW_REAL tre0_1_1;
     FFTW_REAL tim0_1_1;
     FFTW_REAL tre0_1_2;
     FFTW_REAL tim0_1_2;
     FFTW_REAL tre0_1_3;
     FFTW_REAL tim0_1_3;
     FFTW_REAL tre0_1_4;
     FFTW_REAL tim0_1_4;
     FFTW_REAL tre0_1_5;
     FFTW_REAL tim0_1_5;
     FFTW_REAL tre0_1_6;
     FFTW_REAL tim0_1_6;
     FFTW_REAL tre0_1_7;
     FFTW_REAL tim0_1_7;
     FFTW_REAL tre0_2_0;
     FFTW_REAL tim0_2_0;
     FFTW_REAL tre0_2_1;
     FFTW_REAL tim0_2_1;
     FFTW_REAL tre0_2_2;
     FFTW_REAL tim0_2_2;
     FFTW_REAL tre0_2_3;
     FFTW_REAL tim0_2_3;
     FFTW_REAL tre0_2_4;
     FFTW_REAL tim0_2_4;
     FFTW_REAL tre0_2_5;
     FFTW_REAL tim0_2_5;
     FFTW_REAL tre0_2_6;
     FFTW_REAL tim0_2_6;
     FFTW_REAL tre0_2_7;
     FFTW_REAL tim0_2_7;
     FFTW_REAL tre0_3_0;
     FFTW_REAL tim0_3_0;
     FFTW_REAL tre0_3_1;
     FFTW_REAL tim0_3_1;
     FFTW_REAL tre0_3_2;
     FFTW_REAL tim0_3_2;
     FFTW_REAL tre0_3_3;
     FFTW_REAL tim0_3_3;
     FFTW_REAL tre0_3_4;
     FFTW_REAL tim0_3_4;
     FFTW_REAL tre0_3_5;
     FFTW_REAL tim0_3_5;
     FFTW_REAL tre0_3_6;
     FFTW_REAL tim0_3_6;
     FFTW_REAL tre0_3_7;
     FFTW_REAL tim0_3_7;
     FFTW_REAL tre0_4_0;
     FFTW_REAL tim0_4_0;
     FFTW_REAL tre0_4_1;
     FFTW_REAL tim0_4_1;
     FFTW_REAL tre0_4_2;
     FFTW_REAL tim0_4_2;
     FFTW_REAL tre0_4_3;
     FFTW_REAL tim0_4_3;
     FFTW_REAL tre0_4_4;
     FFTW_REAL tim0_4_4;
     FFTW_REAL tre0_4_5;
     FFTW_REAL tim0_4_5;
     FFTW_REAL tre0_4_6;
     FFTW_REAL tim0_4_6;
     FFTW_REAL tre0_4_7;
     FFTW_REAL tim0_4_7;
     FFTW_REAL tre0_5_0;
     FFTW_REAL tim0_5_0;
     FFTW_REAL tre0_5_1;
     FFTW_REAL tim0_5_1;
     FFTW_REAL tre0_5_2;
     FFTW_REAL tim0_5_2;
     FFTW_REAL tre0_5_3;
     FFTW_REAL tim0_5_3;
     FFTW_REAL tre0_5_4;
     FFTW_REAL tim0_5_4;
     FFTW_REAL tre0_5_5;
     FFTW_REAL tim0_5_5;
     FFTW_REAL tre0_5_6;
     FFTW_REAL tim0_5_6;
     FFTW_REAL tre0_5_7;
     FFTW_REAL tim0_5_7;
     FFTW_REAL tre0_6_0;
     FFTW_REAL tim0_6_0;
     FFTW_REAL tre0_6_1;
     FFTW_REAL tim0_6_1;
     FFTW_REAL tre0_6_2;
     FFTW_REAL tim0_6_2;
     FFTW_REAL tre0_6_3;
     FFTW_REAL tim0_6_3;
     FFTW_REAL tre0_6_4;
     FFTW_REAL tim0_6_4;
     FFTW_REAL tre0_6_5;
     FFTW_REAL tim0_6_5;
     FFTW_REAL tre0_6_6;
     FFTW_REAL tim0_6_6;
     FFTW_REAL tre0_6_7;
     FFTW_REAL tim0_6_7;
     FFTW_REAL tre0_7_0;
     FFTW_REAL tim0_7_0;
     FFTW_REAL tre0_7_1;
     FFTW_REAL tim0_7_1;
     FFTW_REAL tre0_7_2;
     FFTW_REAL tim0_7_2;
     FFTW_REAL tre0_7_3;
     FFTW_REAL tim0_7_3;
     FFTW_REAL tre0_7_4;
     FFTW_REAL tim0_7_4;
     FFTW_REAL tre0_7_5;
     FFTW_REAL tim0_7_5;
     FFTW_REAL tre0_7_6;
     FFTW_REAL tim0_7_6;
     FFTW_REAL tre0_7_7;
     FFTW_REAL tim0_7_7;
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_0_2;
	  FFTW_REAL tim1_0_2;
	  FFTW_REAL tre1_0_3;
	  FFTW_REAL tim1_0_3;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  FFTW_REAL tre1_1_2;
	  FFTW_REAL tim1_1_2;
	  FFTW_REAL tre1_1_3;
	  FFTW_REAL tim1_1_3;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[0]);
	       tim2_0_0 = c_im(in[0]);
	       tre2_1_0 = c_re(in[32 * istride]);
	       tim2_1_0 = c_im(in[32 * istride]);
	       tre1_0_0 = tre2_0_0 + tre2_1_0;
	       tim1_0_0 = tim2_0_0 + tim2_1_0;
	       tre1_1_0 = tre2_0_0 - tre2_1_0;
	       tim1_1_0 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[8 * istride]);
	       tim2_0_0 = c_im(in[8 * istride]);
	       tre2_1_0 = c_re(in[40 * istride]);
	       tim2_1_0 = c_im(in[40 * istride]);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[16 * istride]);
	       tim2_0_0 = c_im(in[16 * istride]);
	       tre2_1_0 = c_re(in[48 * istride]);
	       tim2_1_0 = c_im(in[48 * istride]);
	       tre1_0_2 = tre2_0_0 + tre2_1_0;
	       tim1_0_2 = tim2_0_0 + tim2_1_0;
	       tre1_1_2 = tre2_0_0 - tre2_1_0;
	       tim1_1_2 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[24 * istride]);
	       tim2_0_0 = c_im(in[24 * istride]);
	       tre2_1_0 = c_re(in[56 * istride]);
	       tim2_1_0 = c_im(in[56 * istride]);
	       tre1_0_3 = tre2_0_0 + tre2_1_0;
	       tim1_0_3 = tim2_0_0 + tim2_1_0;
	       tre1_1_3 = tre2_0_0 - tre2_1_0;
	       tim1_1_3 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_0_0 + tre1_0_2;
	       tim2_0_0 = tim1_0_0 + tim1_0_2;
	       tre2_1_0 = tre1_0_0 - tre1_0_2;
	       tim2_1_0 = tim1_0_0 - tim1_0_2;
	       tre2_0_1 = tre1_0_1 + tre1_0_3;
	       tim2_0_1 = tim1_0_1 + tim1_0_3;
	       tre2_1_1 = tre1_0_1 - tre1_0_3;
	       tim2_1_1 = tim1_0_1 - tim1_0_3;
	       tre0_0_0 = tre2_0_0 + tre2_0_1;
	       tim0_0_0 = tim2_0_0 + tim2_0_1;
	       tre0_4_0 = tre2_0_0 - tre2_0_1;
	       tim0_4_0 = tim2_0_0 - tim2_0_1;
	       tre0_2_0 = tre2_1_0 + tim2_1_1;
	       tim0_2_0 = tim2_1_0 - tre2_1_1;
	       tre0_6_0 = tre2_1_0 - tim2_1_1;
	       tim0_6_0 = tim2_1_0 + tre2_1_1;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_1_0 + tim1_1_2;
	       tim2_0_0 = tim1_1_0 - tre1_1_2;
	       tre2_1_0 = tre1_1_0 - tim1_1_2;
	       tim2_1_0 = tim1_1_0 + tre1_1_2;
	       {
		    FFTW_REAL tre3_0_0;
		    FFTW_REAL tim3_0_0;
		    FFTW_REAL tre3_1_0;
		    FFTW_REAL tim3_1_0;
		    tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 + tim1_1_1);
		    tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 - tre1_1_1);
		    tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 - tre1_1_3);
		    tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 + tre1_1_3);
		    tre2_0_1 = tre3_0_0 + tre3_1_0;
		    tim2_0_1 = tim3_0_0 - tim3_1_0;
		    tre2_1_1 = tre3_0_0 - tre3_1_0;
		    tim2_1_1 = tim3_0_0 + tim3_1_0;
	       }
	       tre0_1_0 = tre2_0_0 + tre2_0_1;
	       tim0_1_0 = tim2_0_0 + tim2_0_1;
	       tre0_5_0 = tre2_0_0 - tre2_0_1;
	       tim0_5_0 = tim2_0_0 - tim2_0_1;
	       tre0_3_0 = tre2_1_0 + tim2_1_1;
	       tim0_3_0 = tim2_1_0 - tre2_1_1;
	       tre0_7_0 = tre2_1_0 - tim2_1_1;
	       tim0_7_0 = tim2_1_0 + tre2_1_1;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_0_2;
	  FFTW_REAL tim1_0_2;
	  FFTW_REAL tre1_0_3;
	  FFTW_REAL tim1_0_3;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  FFTW_REAL tre1_1_2;
	  FFTW_REAL tim1_1_2;
	  FFTW_REAL tre1_1_3;
	  FFTW_REAL tim1_1_3;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[istride]);
	       tim2_0_0 = c_im(in[istride]);
	       tre2_1_0 = c_re(in[33 * istride]);
	       tim2_1_0 = c_im(in[33 * istride]);
	       tre1_0_0 = tre2_0_0 + tre2_1_0;
	       tim1_0_0 = tim2_0_0 + tim2_1_0;
	       tre1_1_0 = tre2_0_0 - tre2_1_0;
	       tim1_1_0 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[9 * istride]);
	       tim2_0_0 = c_im(in[9 * istride]);
	       tre2_1_0 = c_re(in[41 * istride]);
	       tim2_1_0 = c_im(in[41 * istride]);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[17 * istride]);
	       tim2_0_0 = c_im(in[17 * istride]);
	       tre2_1_0 = c_re(in[49 * istride]);
	       tim2_1_0 = c_im(in[49 * istride]);
	       tre1_0_2 = tre2_0_0 + tre2_1_0;
	       tim1_0_2 = tim2_0_0 + tim2_1_0;
	       tre1_1_2 = tre2_0_0 - tre2_1_0;
	       tim1_1_2 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[25 * istride]);
	       tim2_0_0 = c_im(in[25 * istride]);
	       tre2_1_0 = c_re(in[57 * istride]);
	       tim2_1_0 = c_im(in[57 * istride]);
	       tre1_0_3 = tre2_0_0 + tre2_1_0;
	       tim1_0_3 = tim2_0_0 + tim2_1_0;
	       tre1_1_3 = tre2_0_0 - tre2_1_0;
	       tim1_1_3 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_0_0 + tre1_0_2;
	       tim2_0_0 = tim1_0_0 + tim1_0_2;
	       tre2_1_0 = tre1_0_0 - tre1_0_2;
	       tim2_1_0 = tim1_0_0 - tim1_0_2;
	       tre2_0_1 = tre1_0_1 + tre1_0_3;
	       tim2_0_1 = tim1_0_1 + tim1_0_3;
	       tre2_1_1 = tre1_0_1 - tre1_0_3;
	       tim2_1_1 = tim1_0_1 - tim1_0_3;
	       tre0_0_1 = tre2_0_0 + tre2_0_1;
	       tim0_0_1 = tim2_0_0 + tim2_0_1;
	       tre0_4_1 = tre2_0_0 - tre2_0_1;
	       tim0_4_1 = tim2_0_0 - tim2_0_1;
	       tre0_2_1 = tre2_1_0 + tim2_1_1;
	       tim0_2_1 = tim2_1_0 - tre2_1_1;
	       tre0_6_1 = tre2_1_0 - tim2_1_1;
	       tim0_6_1 = tim2_1_0 + tre2_1_1;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_1_0 + tim1_1_2;
	       tim2_0_0 = tim1_1_0 - tre1_1_2;
	       tre2_1_0 = tre1_1_0 - tim1_1_2;
	       tim2_1_0 = tim1_1_0 + tre1_1_2;
	       {
		    FFTW_REAL tre3_0_0;
		    FFTW_REAL tim3_0_0;
		    FFTW_REAL tre3_1_0;
		    FFTW_REAL tim3_1_0;
		    tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 + tim1_1_1);
		    tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 - tre1_1_1);
		    tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 - tre1_1_3);
		    tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 + tre1_1_3);
		    tre2_0_1 = tre3_0_0 + tre3_1_0;
		    tim2_0_1 = tim3_0_0 - tim3_1_0;
		    tre2_1_1 = tre3_0_0 - tre3_1_0;
		    tim2_1_1 = tim3_0_0 + tim3_1_0;
	       }
	       tre0_1_1 = tre2_0_0 + tre2_0_1;
	       tim0_1_1 = tim2_0_0 + tim2_0_1;
	       tre0_5_1 = tre2_0_0 - tre2_0_1;
	       tim0_5_1 = tim2_0_0 - tim2_0_1;
	       tre0_3_1 = tre2_1_0 + tim2_1_1;
	       tim0_3_1 = tim2_1_0 - tre2_1_1;
	       tre0_7_1 = tre2_1_0 - tim2_1_1;
	       tim0_7_1 = tim2_1_0 + tre2_1_1;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_0_2;
	  FFTW_REAL tim1_0_2;
	  FFTW_REAL tre1_0_3;
	  FFTW_REAL tim1_0_3;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  FFTW_REAL tre1_1_2;
	  FFTW_REAL tim1_1_2;
	  FFTW_REAL tre1_1_3;
	  FFTW_REAL tim1_1_3;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[2 * istride]);
	       tim2_0_0 = c_im(in[2 * istride]);
	       tre2_1_0 = c_re(in[34 * istride]);
	       tim2_1_0 = c_im(in[34 * istride]);
	       tre1_0_0 = tre2_0_0 + tre2_1_0;
	       tim1_0_0 = tim2_0_0 + tim2_1_0;
	       tre1_1_0 = tre2_0_0 - tre2_1_0;
	       tim1_1_0 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[10 * istride]);
	       tim2_0_0 = c_im(in[10 * istride]);
	       tre2_1_0 = c_re(in[42 * istride]);
	       tim2_1_0 = c_im(in[42 * istride]);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[18 * istride]);
	       tim2_0_0 = c_im(in[18 * istride]);
	       tre2_1_0 = c_re(in[50 * istride]);
	       tim2_1_0 = c_im(in[50 * istride]);
	       tre1_0_2 = tre2_0_0 + tre2_1_0;
	       tim1_0_2 = tim2_0_0 + tim2_1_0;
	       tre1_1_2 = tre2_0_0 - tre2_1_0;
	       tim1_1_2 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[26 * istride]);
	       tim2_0_0 = c_im(in[26 * istride]);
	       tre2_1_0 = c_re(in[58 * istride]);
	       tim2_1_0 = c_im(in[58 * istride]);
	       tre1_0_3 = tre2_0_0 + tre2_1_0;
	       tim1_0_3 = tim2_0_0 + tim2_1_0;
	       tre1_1_3 = tre2_0_0 - tre2_1_0;
	       tim1_1_3 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_0_0 + tre1_0_2;
	       tim2_0_0 = tim1_0_0 + tim1_0_2;
	       tre2_1_0 = tre1_0_0 - tre1_0_2;
	       tim2_1_0 = tim1_0_0 - tim1_0_2;
	       tre2_0_1 = tre1_0_1 + tre1_0_3;
	       tim2_0_1 = tim1_0_1 + tim1_0_3;
	       tre2_1_1 = tre1_0_1 - tre1_0_3;
	       tim2_1_1 = tim1_0_1 - tim1_0_3;
	       tre0_0_2 = tre2_0_0 + tre2_0_1;
	       tim0_0_2 = tim2_0_0 + tim2_0_1;
	       tre0_4_2 = tre2_0_0 - tre2_0_1;
	       tim0_4_2 = tim2_0_0 - tim2_0_1;
	       tre0_2_2 = tre2_1_0 + tim2_1_1;
	       tim0_2_2 = tim2_1_0 - tre2_1_1;
	       tre0_6_2 = tre2_1_0 - tim2_1_1;
	       tim0_6_2 = tim2_1_0 + tre2_1_1;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_1_0 + tim1_1_2;
	       tim2_0_0 = tim1_1_0 - tre1_1_2;
	       tre2_1_0 = tre1_1_0 - tim1_1_2;
	       tim2_1_0 = tim1_1_0 + tre1_1_2;
	       {
		    FFTW_REAL tre3_0_0;
		    FFTW_REAL tim3_0_0;
		    FFTW_REAL tre3_1_0;
		    FFTW_REAL tim3_1_0;
		    tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 + tim1_1_1);
		    tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 - tre1_1_1);
		    tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 - tre1_1_3);
		    tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 + tre1_1_3);
		    tre2_0_1 = tre3_0_0 + tre3_1_0;
		    tim2_0_1 = tim3_0_0 - tim3_1_0;
		    tre2_1_1 = tre3_0_0 - tre3_1_0;
		    tim2_1_1 = tim3_0_0 + tim3_1_0;
	       }
	       tre0_1_2 = tre2_0_0 + tre2_0_1;
	       tim0_1_2 = tim2_0_0 + tim2_0_1;
	       tre0_5_2 = tre2_0_0 - tre2_0_1;
	       tim0_5_2 = tim2_0_0 - tim2_0_1;
	       tre0_3_2 = tre2_1_0 + tim2_1_1;
	       tim0_3_2 = tim2_1_0 - tre2_1_1;
	       tre0_7_2 = tre2_1_0 - tim2_1_1;
	       tim0_7_2 = tim2_1_0 + tre2_1_1;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_0_2;
	  FFTW_REAL tim1_0_2;
	  FFTW_REAL tre1_0_3;
	  FFTW_REAL tim1_0_3;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  FFTW_REAL tre1_1_2;
	  FFTW_REAL tim1_1_2;
	  FFTW_REAL tre1_1_3;
	  FFTW_REAL tim1_1_3;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[3 * istride]);
	       tim2_0_0 = c_im(in[3 * istride]);
	       tre2_1_0 = c_re(in[35 * istride]);
	       tim2_1_0 = c_im(in[35 * istride]);
	       tre1_0_0 = tre2_0_0 + tre2_1_0;
	       tim1_0_0 = tim2_0_0 + tim2_1_0;
	       tre1_1_0 = tre2_0_0 - tre2_1_0;
	       tim1_1_0 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[11 * istride]);
	       tim2_0_0 = c_im(in[11 * istride]);
	       tre2_1_0 = c_re(in[43 * istride]);
	       tim2_1_0 = c_im(in[43 * istride]);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[19 * istride]);
	       tim2_0_0 = c_im(in[19 * istride]);
	       tre2_1_0 = c_re(in[51 * istride]);
	       tim2_1_0 = c_im(in[51 * istride]);
	       tre1_0_2 = tre2_0_0 + tre2_1_0;
	       tim1_0_2 = tim2_0_0 + tim2_1_0;
	       tre1_1_2 = tre2_0_0 - tre2_1_0;
	       tim1_1_2 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[27 * istride]);
	       tim2_0_0 = c_im(in[27 * istride]);
	       tre2_1_0 = c_re(in[59 * istride]);
	       tim2_1_0 = c_im(in[59 * istride]);
	       tre1_0_3 = tre2_0_0 + tre2_1_0;
	       tim1_0_3 = tim2_0_0 + tim2_1_0;
	       tre1_1_3 = tre2_0_0 - tre2_1_0;
	       tim1_1_3 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_0_0 + tre1_0_2;
	       tim2_0_0 = tim1_0_0 + tim1_0_2;
	       tre2_1_0 = tre1_0_0 - tre1_0_2;
	       tim2_1_0 = tim1_0_0 - tim1_0_2;
	       tre2_0_1 = tre1_0_1 + tre1_0_3;
	       tim2_0_1 = tim1_0_1 + tim1_0_3;
	       tre2_1_1 = tre1_0_1 - tre1_0_3;
	       tim2_1_1 = tim1_0_1 - tim1_0_3;
	       tre0_0_3 = tre2_0_0 + tre2_0_1;
	       tim0_0_3 = tim2_0_0 + tim2_0_1;
	       tre0_4_3 = tre2_0_0 - tre2_0_1;
	       tim0_4_3 = tim2_0_0 - tim2_0_1;
	       tre0_2_3 = tre2_1_0 + tim2_1_1;
	       tim0_2_3 = tim2_1_0 - tre2_1_1;
	       tre0_6_3 = tre2_1_0 - tim2_1_1;
	       tim0_6_3 = tim2_1_0 + tre2_1_1;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_1_0 + tim1_1_2;
	       tim2_0_0 = tim1_1_0 - tre1_1_2;
	       tre2_1_0 = tre1_1_0 - tim1_1_2;
	       tim2_1_0 = tim1_1_0 + tre1_1_2;
	       {
		    FFTW_REAL tre3_0_0;
		    FFTW_REAL tim3_0_0;
		    FFTW_REAL tre3_1_0;
		    FFTW_REAL tim3_1_0;
		    tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 + tim1_1_1);
		    tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 - tre1_1_1);
		    tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 - tre1_1_3);
		    tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 + tre1_1_3);
		    tre2_0_1 = tre3_0_0 + tre3_1_0;
		    tim2_0_1 = tim3_0_0 - tim3_1_0;
		    tre2_1_1 = tre3_0_0 - tre3_1_0;
		    tim2_1_1 = tim3_0_0 + tim3_1_0;
	       }
	       tre0_1_3 = tre2_0_0 + tre2_0_1;
	       tim0_1_3 = tim2_0_0 + tim2_0_1;
	       tre0_5_3 = tre2_0_0 - tre2_0_1;
	       tim0_5_3 = tim2_0_0 - tim2_0_1;
	       tre0_3_3 = tre2_1_0 + tim2_1_1;
	       tim0_3_3 = tim2_1_0 - tre2_1_1;
	       tre0_7_3 = tre2_1_0 - tim2_1_1;
	       tim0_7_3 = tim2_1_0 + tre2_1_1;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_0_2;
	  FFTW_REAL tim1_0_2;
	  FFTW_REAL tre1_0_3;
	  FFTW_REAL tim1_0_3;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  FFTW_REAL tre1_1_2;
	  FFTW_REAL tim1_1_2;
	  FFTW_REAL tre1_1_3;
	  FFTW_REAL tim1_1_3;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[4 * istride]);
	       tim2_0_0 = c_im(in[4 * istride]);
	       tre2_1_0 = c_re(in[36 * istride]);
	       tim2_1_0 = c_im(in[36 * istride]);
	       tre1_0_0 = tre2_0_0 + tre2_1_0;
	       tim1_0_0 = tim2_0_0 + tim2_1_0;
	       tre1_1_0 = tre2_0_0 - tre2_1_0;
	       tim1_1_0 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[12 * istride]);
	       tim2_0_0 = c_im(in[12 * istride]);
	       tre2_1_0 = c_re(in[44 * istride]);
	       tim2_1_0 = c_im(in[44 * istride]);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[20 * istride]);
	       tim2_0_0 = c_im(in[20 * istride]);
	       tre2_1_0 = c_re(in[52 * istride]);
	       tim2_1_0 = c_im(in[52 * istride]);
	       tre1_0_2 = tre2_0_0 + tre2_1_0;
	       tim1_0_2 = tim2_0_0 + tim2_1_0;
	       tre1_1_2 = tre2_0_0 - tre2_1_0;
	       tim1_1_2 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[28 * istride]);
	       tim2_0_0 = c_im(in[28 * istride]);
	       tre2_1_0 = c_re(in[60 * istride]);
	       tim2_1_0 = c_im(in[60 * istride]);
	       tre1_0_3 = tre2_0_0 + tre2_1_0;
	       tim1_0_3 = tim2_0_0 + tim2_1_0;
	       tre1_1_3 = tre2_0_0 - tre2_1_0;
	       tim1_1_3 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_0_0 + tre1_0_2;
	       tim2_0_0 = tim1_0_0 + tim1_0_2;
	       tre2_1_0 = tre1_0_0 - tre1_0_2;
	       tim2_1_0 = tim1_0_0 - tim1_0_2;
	       tre2_0_1 = tre1_0_1 + tre1_0_3;
	       tim2_0_1 = tim1_0_1 + tim1_0_3;
	       tre2_1_1 = tre1_0_1 - tre1_0_3;
	       tim2_1_1 = tim1_0_1 - tim1_0_3;
	       tre0_0_4 = tre2_0_0 + tre2_0_1;
	       tim0_0_4 = tim2_0_0 + tim2_0_1;
	       tre0_4_4 = tre2_0_0 - tre2_0_1;
	       tim0_4_4 = tim2_0_0 - tim2_0_1;
	       tre0_2_4 = tre2_1_0 + tim2_1_1;
	       tim0_2_4 = tim2_1_0 - tre2_1_1;
	       tre0_6_4 = tre2_1_0 - tim2_1_1;
	       tim0_6_4 = tim2_1_0 + tre2_1_1;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_1_0 + tim1_1_2;
	       tim2_0_0 = tim1_1_0 - tre1_1_2;
	       tre2_1_0 = tre1_1_0 - tim1_1_2;
	       tim2_1_0 = tim1_1_0 + tre1_1_2;
	       {
		    FFTW_REAL tre3_0_0;
		    FFTW_REAL tim3_0_0;
		    FFTW_REAL tre3_1_0;
		    FFTW_REAL tim3_1_0;
		    tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 + tim1_1_1);
		    tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 - tre1_1_1);
		    tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 - tre1_1_3);
		    tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 + tre1_1_3);
		    tre2_0_1 = tre3_0_0 + tre3_1_0;
		    tim2_0_1 = tim3_0_0 - tim3_1_0;
		    tre2_1_1 = tre3_0_0 - tre3_1_0;
		    tim2_1_1 = tim3_0_0 + tim3_1_0;
	       }
	       tre0_1_4 = tre2_0_0 + tre2_0_1;
	       tim0_1_4 = tim2_0_0 + tim2_0_1;
	       tre0_5_4 = tre2_0_0 - tre2_0_1;
	       tim0_5_4 = tim2_0_0 - tim2_0_1;
	       tre0_3_4 = tre2_1_0 + tim2_1_1;
	       tim0_3_4 = tim2_1_0 - tre2_1_1;
	       tre0_7_4 = tre2_1_0 - tim2_1_1;
	       tim0_7_4 = tim2_1_0 + tre2_1_1;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_0_2;
	  FFTW_REAL tim1_0_2;
	  FFTW_REAL tre1_0_3;
	  FFTW_REAL tim1_0_3;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  FFTW_REAL tre1_1_2;
	  FFTW_REAL tim1_1_2;
	  FFTW_REAL tre1_1_3;
	  FFTW_REAL tim1_1_3;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[5 * istride]);
	       tim2_0_0 = c_im(in[5 * istride]);
	       tre2_1_0 = c_re(in[37 * istride]);
	       tim2_1_0 = c_im(in[37 * istride]);
	       tre1_0_0 = tre2_0_0 + tre2_1_0;
	       tim1_0_0 = tim2_0_0 + tim2_1_0;
	       tre1_1_0 = tre2_0_0 - tre2_1_0;
	       tim1_1_0 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[13 * istride]);
	       tim2_0_0 = c_im(in[13 * istride]);
	       tre2_1_0 = c_re(in[45 * istride]);
	       tim2_1_0 = c_im(in[45 * istride]);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[21 * istride]);
	       tim2_0_0 = c_im(in[21 * istride]);
	       tre2_1_0 = c_re(in[53 * istride]);
	       tim2_1_0 = c_im(in[53 * istride]);
	       tre1_0_2 = tre2_0_0 + tre2_1_0;
	       tim1_0_2 = tim2_0_0 + tim2_1_0;
	       tre1_1_2 = tre2_0_0 - tre2_1_0;
	       tim1_1_2 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[29 * istride]);
	       tim2_0_0 = c_im(in[29 * istride]);
	       tre2_1_0 = c_re(in[61 * istride]);
	       tim2_1_0 = c_im(in[61 * istride]);
	       tre1_0_3 = tre2_0_0 + tre2_1_0;
	       tim1_0_3 = tim2_0_0 + tim2_1_0;
	       tre1_1_3 = tre2_0_0 - tre2_1_0;
	       tim1_1_3 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_0_0 + tre1_0_2;
	       tim2_0_0 = tim1_0_0 + tim1_0_2;
	       tre2_1_0 = tre1_0_0 - tre1_0_2;
	       tim2_1_0 = tim1_0_0 - tim1_0_2;
	       tre2_0_1 = tre1_0_1 + tre1_0_3;
	       tim2_0_1 = tim1_0_1 + tim1_0_3;
	       tre2_1_1 = tre1_0_1 - tre1_0_3;
	       tim2_1_1 = tim1_0_1 - tim1_0_3;
	       tre0_0_5 = tre2_0_0 + tre2_0_1;
	       tim0_0_5 = tim2_0_0 + tim2_0_1;
	       tre0_4_5 = tre2_0_0 - tre2_0_1;
	       tim0_4_5 = tim2_0_0 - tim2_0_1;
	       tre0_2_5 = tre2_1_0 + tim2_1_1;
	       tim0_2_5 = tim2_1_0 - tre2_1_1;
	       tre0_6_5 = tre2_1_0 - tim2_1_1;
	       tim0_6_5 = tim2_1_0 + tre2_1_1;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_1_0 + tim1_1_2;
	       tim2_0_0 = tim1_1_0 - tre1_1_2;
	       tre2_1_0 = tre1_1_0 - tim1_1_2;
	       tim2_1_0 = tim1_1_0 + tre1_1_2;
	       {
		    FFTW_REAL tre3_0_0;
		    FFTW_REAL tim3_0_0;
		    FFTW_REAL tre3_1_0;
		    FFTW_REAL tim3_1_0;
		    tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 + tim1_1_1);
		    tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 - tre1_1_1);
		    tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 - tre1_1_3);
		    tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 + tre1_1_3);
		    tre2_0_1 = tre3_0_0 + tre3_1_0;
		    tim2_0_1 = tim3_0_0 - tim3_1_0;
		    tre2_1_1 = tre3_0_0 - tre3_1_0;
		    tim2_1_1 = tim3_0_0 + tim3_1_0;
	       }
	       tre0_1_5 = tre2_0_0 + tre2_0_1;
	       tim0_1_5 = tim2_0_0 + tim2_0_1;
	       tre0_5_5 = tre2_0_0 - tre2_0_1;
	       tim0_5_5 = tim2_0_0 - tim2_0_1;
	       tre0_3_5 = tre2_1_0 + tim2_1_1;
	       tim0_3_5 = tim2_1_0 - tre2_1_1;
	       tre0_7_5 = tre2_1_0 - tim2_1_1;
	       tim0_7_5 = tim2_1_0 + tre2_1_1;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_0_2;
	  FFTW_REAL tim1_0_2;
	  FFTW_REAL tre1_0_3;
	  FFTW_REAL tim1_0_3;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  FFTW_REAL tre1_1_2;
	  FFTW_REAL tim1_1_2;
	  FFTW_REAL tre1_1_3;
	  FFTW_REAL tim1_1_3;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[6 * istride]);
	       tim2_0_0 = c_im(in[6 * istride]);
	       tre2_1_0 = c_re(in[38 * istride]);
	       tim2_1_0 = c_im(in[38 * istride]);
	       tre1_0_0 = tre2_0_0 + tre2_1_0;
	       tim1_0_0 = tim2_0_0 + tim2_1_0;
	       tre1_1_0 = tre2_0_0 - tre2_1_0;
	       tim1_1_0 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[14 * istride]);
	       tim2_0_0 = c_im(in[14 * istride]);
	       tre2_1_0 = c_re(in[46 * istride]);
	       tim2_1_0 = c_im(in[46 * istride]);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[22 * istride]);
	       tim2_0_0 = c_im(in[22 * istride]);
	       tre2_1_0 = c_re(in[54 * istride]);
	       tim2_1_0 = c_im(in[54 * istride]);
	       tre1_0_2 = tre2_0_0 + tre2_1_0;
	       tim1_0_2 = tim2_0_0 + tim2_1_0;
	       tre1_1_2 = tre2_0_0 - tre2_1_0;
	       tim1_1_2 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[30 * istride]);
	       tim2_0_0 = c_im(in[30 * istride]);
	       tre2_1_0 = c_re(in[62 * istride]);
	       tim2_1_0 = c_im(in[62 * istride]);
	       tre1_0_3 = tre2_0_0 + tre2_1_0;
	       tim1_0_3 = tim2_0_0 + tim2_1_0;
	       tre1_1_3 = tre2_0_0 - tre2_1_0;
	       tim1_1_3 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_0_0 + tre1_0_2;
	       tim2_0_0 = tim1_0_0 + tim1_0_2;
	       tre2_1_0 = tre1_0_0 - tre1_0_2;
	       tim2_1_0 = tim1_0_0 - tim1_0_2;
	       tre2_0_1 = tre1_0_1 + tre1_0_3;
	       tim2_0_1 = tim1_0_1 + tim1_0_3;
	       tre2_1_1 = tre1_0_1 - tre1_0_3;
	       tim2_1_1 = tim1_0_1 - tim1_0_3;
	       tre0_0_6 = tre2_0_0 + tre2_0_1;
	       tim0_0_6 = tim2_0_0 + tim2_0_1;
	       tre0_4_6 = tre2_0_0 - tre2_0_1;
	       tim0_4_6 = tim2_0_0 - tim2_0_1;
	       tre0_2_6 = tre2_1_0 + tim2_1_1;
	       tim0_2_6 = tim2_1_0 - tre2_1_1;
	       tre0_6_6 = tre2_1_0 - tim2_1_1;
	       tim0_6_6 = tim2_1_0 + tre2_1_1;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_1_0 + tim1_1_2;
	       tim2_0_0 = tim1_1_0 - tre1_1_2;
	       tre2_1_0 = tre1_1_0 - tim1_1_2;
	       tim2_1_0 = tim1_1_0 + tre1_1_2;
	       {
		    FFTW_REAL tre3_0_0;
		    FFTW_REAL tim3_0_0;
		    FFTW_REAL tre3_1_0;
		    FFTW_REAL tim3_1_0;
		    tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 + tim1_1_1);
		    tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 - tre1_1_1);
		    tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 - tre1_1_3);
		    tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 + tre1_1_3);
		    tre2_0_1 = tre3_0_0 + tre3_1_0;
		    tim2_0_1 = tim3_0_0 - tim3_1_0;
		    tre2_1_1 = tre3_0_0 - tre3_1_0;
		    tim2_1_1 = tim3_0_0 + tim3_1_0;
	       }
	       tre0_1_6 = tre2_0_0 + tre2_0_1;
	       tim0_1_6 = tim2_0_0 + tim2_0_1;
	       tre0_5_6 = tre2_0_0 - tre2_0_1;
	       tim0_5_6 = tim2_0_0 - tim2_0_1;
	       tre0_3_6 = tre2_1_0 + tim2_1_1;
	       tim0_3_6 = tim2_1_0 - tre2_1_1;
	       tre0_7_6 = tre2_1_0 - tim2_1_1;
	       tim0_7_6 = tim2_1_0 + tre2_1_1;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_0_2;
	  FFTW_REAL tim1_0_2;
	  FFTW_REAL tre1_0_3;
	  FFTW_REAL tim1_0_3;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  FFTW_REAL tre1_1_2;
	  FFTW_REAL tim1_1_2;
	  FFTW_REAL tre1_1_3;
	  FFTW_REAL tim1_1_3;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[7 * istride]);
	       tim2_0_0 = c_im(in[7 * istride]);
	       tre2_1_0 = c_re(in[39 * istride]);
	       tim2_1_0 = c_im(in[39 * istride]);
	       tre1_0_0 = tre2_0_0 + tre2_1_0;
	       tim1_0_0 = tim2_0_0 + tim2_1_0;
	       tre1_1_0 = tre2_0_0 - tre2_1_0;
	       tim1_1_0 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[15 * istride]);
	       tim2_0_0 = c_im(in[15 * istride]);
	       tre2_1_0 = c_re(in[47 * istride]);
	       tim2_1_0 = c_im(in[47 * istride]);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[23 * istride]);
	       tim2_0_0 = c_im(in[23 * istride]);
	       tre2_1_0 = c_re(in[55 * istride]);
	       tim2_1_0 = c_im(in[55 * istride]);
	       tre1_0_2 = tre2_0_0 + tre2_1_0;
	       tim1_0_2 = tim2_0_0 + tim2_1_0;
	       tre1_1_2 = tre2_0_0 - tre2_1_0;
	       tim1_1_2 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[31 * istride]);
	       tim2_0_0 = c_im(in[31 * istride]);
	       tre2_1_0 = c_re(in[63 * istride]);
	       tim2_1_0 = c_im(in[63 * istride]);
	       tre1_0_3 = tre2_0_0 + tre2_1_0;
	       tim1_0_3 = tim2_0_0 + tim2_1_0;
	       tre1_1_3 = tre2_0_0 - tre2_1_0;
	       tim1_1_3 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_0_0 + tre1_0_2;
	       tim2_0_0 = tim1_0_0 + tim1_0_2;
	       tre2_1_0 = tre1_0_0 - tre1_0_2;
	       tim2_1_0 = tim1_0_0 - tim1_0_2;
	       tre2_0_1 = tre1_0_1 + tre1_0_3;
	       tim2_0_1 = tim1_0_1 + tim1_0_3;
	       tre2_1_1 = tre1_0_1 - tre1_0_3;
	       tim2_1_1 = tim1_0_1 - tim1_0_3;
	       tre0_0_7 = tre2_0_0 + tre2_0_1;
	       tim0_0_7 = tim2_0_0 + tim2_0_1;
	       tre0_4_7 = tre2_0_0 - tre2_0_1;
	       tim0_4_7 = tim2_0_0 - tim2_0_1;
	       tre0_2_7 = tre2_1_0 + tim2_1_1;
	       tim0_2_7 = tim2_1_0 - tre2_1_1;
	       tre0_6_7 = tre2_1_0 - tim2_1_1;
	       tim0_6_7 = tim2_1_0 + tre2_1_1;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_1_0 + tim1_1_2;
	       tim2_0_0 = tim1_1_0 - tre1_1_2;
	       tre2_1_0 = tre1_1_0 - tim1_1_2;
	       tim2_1_0 = tim1_1_0 + tre1_1_2;
	       {
		    FFTW_REAL tre3_0_0;
		    FFTW_REAL tim3_0_0;
		    FFTW_REAL tre3_1_0;
		    FFTW_REAL tim3_1_0;
		    tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 + tim1_1_1);
		    tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 - tre1_1_1);
		    tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 - tre1_1_3);
		    tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 + tre1_1_3);
		    tre2_0_1 = tre3_0_0 + tre3_1_0;
		    tim2_0_1 = tim3_0_0 - tim3_1_0;
		    tre2_1_1 = tre3_0_0 - tre3_1_0;
		    tim2_1_1 = tim3_0_0 + tim3_1_0;
	       }
	       tre0_1_7 = tre2_0_0 + tre2_0_1;
	       tim0_1_7 = tim2_0_0 + tim2_0_1;
	       tre0_5_7 = tre2_0_0 - tre2_0_1;
	       tim0_5_7 = tim2_0_0 - tim2_0_1;
	       tre0_3_7 = tre2_1_0 + tim2_1_1;
	       tim0_3_7 = tim2_1_0 - tre2_1_1;
	       tre0_7_7 = tre2_1_0 - tim2_1_1;
	       tim0_7_7 = tim2_1_0 + tre2_1_1;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_0_2;
	  FFTW_REAL tim1_0_2;
	  FFTW_REAL tre1_0_3;
	  FFTW_REAL tim1_0_3;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  FFTW_REAL tre1_1_2;
	  FFTW_REAL tim1_1_2;
	  FFTW_REAL tre1_1_3;
	  FFTW_REAL tim1_1_3;
	  tre1_0_0 = tre0_0_0 + tre0_0_4;
	  tim1_0_0 = tim0_0_0 + tim0_0_4;
	  tre1_1_0 = tre0_0_0 - tre0_0_4;
	  tim1_1_0 = tim0_0_0 - tim0_0_4;
	  tre1_0_1 = tre0_0_1 + tre0_0_5;
	  tim1_0_1 = tim0_0_1 + tim0_0_5;
	  tre1_1_1 = tre0_0_1 - tre0_0_5;
	  tim1_1_1 = tim0_0_1 - tim0_0_5;
	  tre1_0_2 = tre0_0_2 + tre0_0_6;
	  tim1_0_2 = tim0_0_2 + tim0_0_6;
	  tre1_1_2 = tre0_0_2 - tre0_0_6;
	  tim1_1_2 = tim0_0_2 - tim0_0_6;
	  tre1_0_3 = tre0_0_3 + tre0_0_7;
	  tim1_0_3 = tim0_0_3 + tim0_0_7;
	  tre1_1_3 = tre0_0_3 - tre0_0_7;
	  tim1_1_3 = tim0_0_3 - tim0_0_7;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_0_0 + tre1_0_2;
	       tim2_0_0 = tim1_0_0 + tim1_0_2;
	       tre2_1_0 = tre1_0_0 - tre1_0_2;
	       tim2_1_0 = tim1_0_0 - tim1_0_2;
	       tre2_0_1 = tre1_0_1 + tre1_0_3;
	       tim2_0_1 = tim1_0_1 + tim1_0_3;
	       tre2_1_1 = tre1_0_1 - tre1_0_3;
	       tim2_1_1 = tim1_0_1 - tim1_0_3;
	       c_re(out[0]) = tre2_0_0 + tre2_0_1;
	       c_im(out[0]) = tim2_0_0 + tim2_0_1;
	       c_re(out[32 * ostride]) = tre2_0_0 - tre2_0_1;
	       c_im(out[32 * ostride]) = tim2_0_0 - tim2_0_1;
	       c_re(out[16 * ostride]) = tre2_1_0 + tim2_1_1;
	       c_im(out[16 * ostride]) = tim2_1_0 - tre2_1_1;
	       c_re(out[48 * ostride]) = tre2_1_0 - tim2_1_1;
	       c_im(out[48 * ostride]) = tim2_1_0 + tre2_1_1;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_1_0 + tim1_1_2;
	       tim2_0_0 = tim1_1_0 - tre1_1_2;
	       tre2_1_0 = tre1_1_0 - tim1_1_2;
	       tim2_1_0 = tim1_1_0 + tre1_1_2;
	       {
		    FFTW_REAL tre3_0_0;
		    FFTW_REAL tim3_0_0;
		    FFTW_REAL tre3_1_0;
		    FFTW_REAL tim3_1_0;
		    tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 + tim1_1_1);
		    tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 - tre1_1_1);
		    tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 - tre1_1_3);
		    tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 + tre1_1_3);
		    tre2_0_1 = tre3_0_0 + tre3_1_0;
		    tim2_0_1 = tim3_0_0 - tim3_1_0;
		    tre2_1_1 = tre3_0_0 - tre3_1_0;
		    tim2_1_1 = tim3_0_0 + tim3_1_0;
	       }
	       c_re(out[8 * ostride]) = tre2_0_0 + tre2_0_1;
	       c_im(out[8 * ostride]) = tim2_0_0 + tim2_0_1;
	       c_re(out[40 * ostride]) = tre2_0_0 - tre2_0_1;
	       c_im(out[40 * ostride]) = tim2_0_0 - tim2_0_1;
	       c_re(out[24 * ostride]) = tre2_1_0 + tim2_1_1;
	       c_im(out[24 * ostride]) = tim2_1_0 - tre2_1_1;
	       c_re(out[56 * ostride]) = tre2_1_0 - tim2_1_1;
	       c_im(out[56 * ostride]) = tim2_1_0 + tre2_1_1;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_0_2;
	  FFTW_REAL tim1_0_2;
	  FFTW_REAL tre1_0_3;
	  FFTW_REAL tim1_0_3;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  FFTW_REAL tre1_1_2;
	  FFTW_REAL tim1_1_2;
	  FFTW_REAL tre1_1_3;
	  FFTW_REAL tim1_1_3;
	  {
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_1_0 = (((FFTW_REAL) FFTW_K923879532) * tre0_1_4) + (((FFTW_REAL) FFTW_K382683432) * tim0_1_4);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K923879532) * tim0_1_4) - (((FFTW_REAL) FFTW_K382683432) * tre0_1_4);
	       tre1_0_0 = tre0_1_0 + tre2_1_0;
	       tim1_0_0 = tim0_1_0 + tim2_1_0;
	       tre1_1_0 = tre0_1_0 - tre2_1_0;
	       tim1_1_0 = tim0_1_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K995184726) * tre0_1_1) + (((FFTW_REAL) FFTW_K098017140) * tim0_1_1);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K995184726) * tim0_1_1) - (((FFTW_REAL) FFTW_K098017140) * tre0_1_1);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K881921264) * tre0_1_5) + (((FFTW_REAL) FFTW_K471396736) * tim0_1_5);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K881921264) * tim0_1_5) - (((FFTW_REAL) FFTW_K471396736) * tre0_1_5);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K980785280) * tre0_1_2) + (((FFTW_REAL) FFTW_K195090322) * tim0_1_2);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K980785280) * tim0_1_2) - (((FFTW_REAL) FFTW_K195090322) * tre0_1_2);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K831469612) * tre0_1_6) + (((FFTW_REAL) FFTW_K555570233) * tim0_1_6);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K831469612) * tim0_1_6) - (((FFTW_REAL) FFTW_K555570233) * tre0_1_6);
	       tre1_0_2 = tre2_0_0 + tre2_1_0;
	       tim1_0_2 = tim2_0_0 + tim2_1_0;
	       tre1_1_2 = tre2_0_0 - tre2_1_0;
	       tim1_1_2 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K956940335) * tre0_1_3) + (((FFTW_REAL) FFTW_K290284677) * tim0_1_3);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K956940335) * tim0_1_3) - (((FFTW_REAL) FFTW_K290284677) * tre0_1_3);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K773010453) * tre0_1_7) + (((FFTW_REAL) FFTW_K634393284) * tim0_1_7);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K773010453) * tim0_1_7) - (((FFTW_REAL) FFTW_K634393284) * tre0_1_7);
	       tre1_0_3 = tre2_0_0 + tre2_1_0;
	       tim1_0_3 = tim2_0_0 + tim2_1_0;
	       tre1_1_3 = tre2_0_0 - tre2_1_0;
	       tim1_1_3 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_0_0 + tre1_0_2;
	       tim2_0_0 = tim1_0_0 + tim1_0_2;
	       tre2_1_0 = tre1_0_0 - tre1_0_2;
	       tim2_1_0 = tim1_0_0 - tim1_0_2;
	       tre2_0_1 = tre1_0_1 + tre1_0_3;
	       tim2_0_1 = tim1_0_1 + tim1_0_3;
	       tre2_1_1 = tre1_0_1 - tre1_0_3;
	       tim2_1_1 = tim1_0_1 - tim1_0_3;
	       c_re(out[ostride]) = tre2_0_0 + tre2_0_1;
	       c_im(out[ostride]) = tim2_0_0 + tim2_0_1;
	       c_re(out[33 * ostride]) = tre2_0_0 - tre2_0_1;
	       c_im(out[33 * ostride]) = tim2_0_0 - tim2_0_1;
	       c_re(out[17 * ostride]) = tre2_1_0 + tim2_1_1;
	       c_im(out[17 * ostride]) = tim2_1_0 - tre2_1_1;
	       c_re(out[49 * ostride]) = tre2_1_0 - tim2_1_1;
	       c_im(out[49 * ostride]) = tim2_1_0 + tre2_1_1;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_1_0 + tim1_1_2;
	       tim2_0_0 = tim1_1_0 - tre1_1_2;
	       tre2_1_0 = tre1_1_0 - tim1_1_2;
	       tim2_1_0 = tim1_1_0 + tre1_1_2;
	       {
		    FFTW_REAL tre3_0_0;
		    FFTW_REAL tim3_0_0;
		    FFTW_REAL tre3_1_0;
		    FFTW_REAL tim3_1_0;
		    tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 + tim1_1_1);
		    tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 - tre1_1_1);
		    tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 - tre1_1_3);
		    tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 + tre1_1_3);
		    tre2_0_1 = tre3_0_0 + tre3_1_0;
		    tim2_0_1 = tim3_0_0 - tim3_1_0;
		    tre2_1_1 = tre3_0_0 - tre3_1_0;
		    tim2_1_1 = tim3_0_0 + tim3_1_0;
	       }
	       c_re(out[9 * ostride]) = tre2_0_0 + tre2_0_1;
	       c_im(out[9 * ostride]) = tim2_0_0 + tim2_0_1;
	       c_re(out[41 * ostride]) = tre2_0_0 - tre2_0_1;
	       c_im(out[41 * ostride]) = tim2_0_0 - tim2_0_1;
	       c_re(out[25 * ostride]) = tre2_1_0 + tim2_1_1;
	       c_im(out[25 * ostride]) = tim2_1_0 - tre2_1_1;
	       c_re(out[57 * ostride]) = tre2_1_0 - tim2_1_1;
	       c_im(out[57 * ostride]) = tim2_1_0 + tre2_1_1;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_0_2;
	  FFTW_REAL tim1_0_2;
	  FFTW_REAL tre1_0_3;
	  FFTW_REAL tim1_0_3;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  FFTW_REAL tre1_1_2;
	  FFTW_REAL tim1_1_2;
	  FFTW_REAL tre1_1_3;
	  FFTW_REAL tim1_1_3;
	  {
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_2_4 + tim0_2_4);
	       tim2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_2_4 - tre0_2_4);
	       tre1_0_0 = tre0_2_0 + tre2_1_0;
	       tim1_0_0 = tim0_2_0 + tim2_1_0;
	       tre1_1_0 = tre0_2_0 - tre2_1_0;
	       tim1_1_0 = tim0_2_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K980785280) * tre0_2_1) + (((FFTW_REAL) FFTW_K195090322) * tim0_2_1);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K980785280) * tim0_2_1) - (((FFTW_REAL) FFTW_K195090322) * tre0_2_1);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K555570233) * tre0_2_5) + (((FFTW_REAL) FFTW_K831469612) * tim0_2_5);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K555570233) * tim0_2_5) - (((FFTW_REAL) FFTW_K831469612) * tre0_2_5);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K923879532) * tre0_2_2) + (((FFTW_REAL) FFTW_K382683432) * tim0_2_2);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K923879532) * tim0_2_2) - (((FFTW_REAL) FFTW_K382683432) * tre0_2_2);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tre0_2_6) + (((FFTW_REAL) FFTW_K923879532) * tim0_2_6);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tim0_2_6) - (((FFTW_REAL) FFTW_K923879532) * tre0_2_6);
	       tre1_0_2 = tre2_0_0 + tre2_1_0;
	       tim1_0_2 = tim2_0_0 + tim2_1_0;
	       tre1_1_2 = tre2_0_0 - tre2_1_0;
	       tim1_1_2 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K831469612) * tre0_2_3) + (((FFTW_REAL) FFTW_K555570233) * tim0_2_3);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K831469612) * tim0_2_3) - (((FFTW_REAL) FFTW_K555570233) * tre0_2_3);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K195090322) * tre0_2_7) + (((FFTW_REAL) FFTW_K980785280) * tim0_2_7);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K195090322) * tim0_2_7) - (((FFTW_REAL) FFTW_K980785280) * tre0_2_7);
	       tre1_0_3 = tre2_0_0 + tre2_1_0;
	       tim1_0_3 = tim2_0_0 + tim2_1_0;
	       tre1_1_3 = tre2_0_0 - tre2_1_0;
	       tim1_1_3 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_0_0 + tre1_0_2;
	       tim2_0_0 = tim1_0_0 + tim1_0_2;
	       tre2_1_0 = tre1_0_0 - tre1_0_2;
	       tim2_1_0 = tim1_0_0 - tim1_0_2;
	       tre2_0_1 = tre1_0_1 + tre1_0_3;
	       tim2_0_1 = tim1_0_1 + tim1_0_3;
	       tre2_1_1 = tre1_0_1 - tre1_0_3;
	       tim2_1_1 = tim1_0_1 - tim1_0_3;
	       c_re(out[2 * ostride]) = tre2_0_0 + tre2_0_1;
	       c_im(out[2 * ostride]) = tim2_0_0 + tim2_0_1;
	       c_re(out[34 * ostride]) = tre2_0_0 - tre2_0_1;
	       c_im(out[34 * ostride]) = tim2_0_0 - tim2_0_1;
	       c_re(out[18 * ostride]) = tre2_1_0 + tim2_1_1;
	       c_im(out[18 * ostride]) = tim2_1_0 - tre2_1_1;
	       c_re(out[50 * ostride]) = tre2_1_0 - tim2_1_1;
	       c_im(out[50 * ostride]) = tim2_1_0 + tre2_1_1;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_1_0 + tim1_1_2;
	       tim2_0_0 = tim1_1_0 - tre1_1_2;
	       tre2_1_0 = tre1_1_0 - tim1_1_2;
	       tim2_1_0 = tim1_1_0 + tre1_1_2;
	       {
		    FFTW_REAL tre3_0_0;
		    FFTW_REAL tim3_0_0;
		    FFTW_REAL tre3_1_0;
		    FFTW_REAL tim3_1_0;
		    tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 + tim1_1_1);
		    tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 - tre1_1_1);
		    tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 - tre1_1_3);
		    tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 + tre1_1_3);
		    tre2_0_1 = tre3_0_0 + tre3_1_0;
		    tim2_0_1 = tim3_0_0 - tim3_1_0;
		    tre2_1_1 = tre3_0_0 - tre3_1_0;
		    tim2_1_1 = tim3_0_0 + tim3_1_0;
	       }
	       c_re(out[10 * ostride]) = tre2_0_0 + tre2_0_1;
	       c_im(out[10 * ostride]) = tim2_0_0 + tim2_0_1;
	       c_re(out[42 * ostride]) = tre2_0_0 - tre2_0_1;
	       c_im(out[42 * ostride]) = tim2_0_0 - tim2_0_1;
	       c_re(out[26 * ostride]) = tre2_1_0 + tim2_1_1;
	       c_im(out[26 * ostride]) = tim2_1_0 - tre2_1_1;
	       c_re(out[58 * ostride]) = tre2_1_0 - tim2_1_1;
	       c_im(out[58 * ostride]) = tim2_1_0 + tre2_1_1;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_0_2;
	  FFTW_REAL tim1_0_2;
	  FFTW_REAL tre1_0_3;
	  FFTW_REAL tim1_0_3;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  FFTW_REAL tre1_1_2;
	  FFTW_REAL tim1_1_2;
	  FFTW_REAL tre1_1_3;
	  FFTW_REAL tim1_1_3;
	  {
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tre0_3_4) + (((FFTW_REAL) FFTW_K923879532) * tim0_3_4);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tim0_3_4) - (((FFTW_REAL) FFTW_K923879532) * tre0_3_4);
	       tre1_0_0 = tre0_3_0 + tre2_1_0;
	       tim1_0_0 = tim0_3_0 + tim2_1_0;
	       tre1_1_0 = tre0_3_0 - tre2_1_0;
	       tim1_1_0 = tim0_3_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K956940335) * tre0_3_1) + (((FFTW_REAL) FFTW_K290284677) * tim0_3_1);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K956940335) * tim0_3_1) - (((FFTW_REAL) FFTW_K290284677) * tre0_3_1);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K098017140) * tre0_3_5) + (((FFTW_REAL) FFTW_K995184726) * tim0_3_5);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K098017140) * tim0_3_5) - (((FFTW_REAL) FFTW_K995184726) * tre0_3_5);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K831469612) * tre0_3_2) + (((FFTW_REAL) FFTW_K555570233) * tim0_3_2);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K831469612) * tim0_3_2) - (((FFTW_REAL) FFTW_K555570233) * tre0_3_2);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K980785280) * tim0_3_6) - (((FFTW_REAL) FFTW_K195090322) * tre0_3_6);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K195090322) * tim0_3_6) + (((FFTW_REAL) FFTW_K980785280) * tre0_3_6);
	       tre1_0_2 = tre2_0_0 + tre2_1_0;
	       tim1_0_2 = tim2_0_0 - tim2_1_0;
	       tre1_1_2 = tre2_0_0 - tre2_1_0;
	       tim1_1_2 = tim2_0_0 + tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K634393284) * tre0_3_3) + (((FFTW_REAL) FFTW_K773010453) * tim0_3_3);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K634393284) * tim0_3_3) - (((FFTW_REAL) FFTW_K773010453) * tre0_3_3);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K881921264) * tim0_3_7) - (((FFTW_REAL) FFTW_K471396736) * tre0_3_7);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K471396736) * tim0_3_7) + (((FFTW_REAL) FFTW_K881921264) * tre0_3_7);
	       tre1_0_3 = tre2_0_0 + tre2_1_0;
	       tim1_0_3 = tim2_0_0 - tim2_1_0;
	       tre1_1_3 = tre2_0_0 - tre2_1_0;
	       tim1_1_3 = tim2_0_0 + tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_0_0 + tre1_0_2;
	       tim2_0_0 = tim1_0_0 + tim1_0_2;
	       tre2_1_0 = tre1_0_0 - tre1_0_2;
	       tim2_1_0 = tim1_0_0 - tim1_0_2;
	       tre2_0_1 = tre1_0_1 + tre1_0_3;
	       tim2_0_1 = tim1_0_1 + tim1_0_3;
	       tre2_1_1 = tre1_0_1 - tre1_0_3;
	       tim2_1_1 = tim1_0_1 - tim1_0_3;
	       c_re(out[3 * ostride]) = tre2_0_0 + tre2_0_1;
	       c_im(out[3 * ostride]) = tim2_0_0 + tim2_0_1;
	       c_re(out[35 * ostride]) = tre2_0_0 - tre2_0_1;
	       c_im(out[35 * ostride]) = tim2_0_0 - tim2_0_1;
	       c_re(out[19 * ostride]) = tre2_1_0 + tim2_1_1;
	       c_im(out[19 * ostride]) = tim2_1_0 - tre2_1_1;
	       c_re(out[51 * ostride]) = tre2_1_0 - tim2_1_1;
	       c_im(out[51 * ostride]) = tim2_1_0 + tre2_1_1;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_1_0 + tim1_1_2;
	       tim2_0_0 = tim1_1_0 - tre1_1_2;
	       tre2_1_0 = tre1_1_0 - tim1_1_2;
	       tim2_1_0 = tim1_1_0 + tre1_1_2;
	       {
		    FFTW_REAL tre3_0_0;
		    FFTW_REAL tim3_0_0;
		    FFTW_REAL tre3_1_0;
		    FFTW_REAL tim3_1_0;
		    tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 + tim1_1_1);
		    tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 - tre1_1_1);
		    tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 - tre1_1_3);
		    tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 + tre1_1_3);
		    tre2_0_1 = tre3_0_0 + tre3_1_0;
		    tim2_0_1 = tim3_0_0 - tim3_1_0;
		    tre2_1_1 = tre3_0_0 - tre3_1_0;
		    tim2_1_1 = tim3_0_0 + tim3_1_0;
	       }
	       c_re(out[11 * ostride]) = tre2_0_0 + tre2_0_1;
	       c_im(out[11 * ostride]) = tim2_0_0 + tim2_0_1;
	       c_re(out[43 * ostride]) = tre2_0_0 - tre2_0_1;
	       c_im(out[43 * ostride]) = tim2_0_0 - tim2_0_1;
	       c_re(out[27 * ostride]) = tre2_1_0 + tim2_1_1;
	       c_im(out[27 * ostride]) = tim2_1_0 - tre2_1_1;
	       c_re(out[59 * ostride]) = tre2_1_0 - tim2_1_1;
	       c_im(out[59 * ostride]) = tim2_1_0 + tre2_1_1;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_0_2;
	  FFTW_REAL tim1_0_2;
	  FFTW_REAL tre1_0_3;
	  FFTW_REAL tim1_0_3;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  FFTW_REAL tre1_1_2;
	  FFTW_REAL tim1_1_2;
	  FFTW_REAL tre1_1_3;
	  FFTW_REAL tim1_1_3;
	  tre1_0_0 = tre0_4_0 + tim0_4_4;
	  tim1_0_0 = tim0_4_0 - tre0_4_4;
	  tre1_1_0 = tre0_4_0 - tim0_4_4;
	  tim1_1_0 = tim0_4_0 + tre0_4_4;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K923879532) * tre0_4_1) + (((FFTW_REAL) FFTW_K382683432) * tim0_4_1);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K923879532) * tim0_4_1) - (((FFTW_REAL) FFTW_K382683432) * tre0_4_1);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K923879532) * tim0_4_5) - (((FFTW_REAL) FFTW_K382683432) * tre0_4_5);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tim0_4_5) + (((FFTW_REAL) FFTW_K923879532) * tre0_4_5);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 - tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 + tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_4_2 + tim0_4_2);
	       tim2_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_4_2 - tre0_4_2);
	       tre2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_4_6 - tre0_4_6);
	       tim2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_4_6 + tre0_4_6);
	       tre1_0_2 = tre2_0_0 + tre2_1_0;
	       tim1_0_2 = tim2_0_0 - tim2_1_0;
	       tre1_1_2 = tre2_0_0 - tre2_1_0;
	       tim1_1_2 = tim2_0_0 + tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K382683432) * tre0_4_3) + (((FFTW_REAL) FFTW_K923879532) * tim0_4_3);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K382683432) * tim0_4_3) - (((FFTW_REAL) FFTW_K923879532) * tre0_4_3);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tim0_4_7) - (((FFTW_REAL) FFTW_K923879532) * tre0_4_7);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K923879532) * tim0_4_7) + (((FFTW_REAL) FFTW_K382683432) * tre0_4_7);
	       tre1_0_3 = tre2_0_0 + tre2_1_0;
	       tim1_0_3 = tim2_0_0 - tim2_1_0;
	       tre1_1_3 = tre2_0_0 - tre2_1_0;
	       tim1_1_3 = tim2_0_0 + tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_0_0 + tre1_0_2;
	       tim2_0_0 = tim1_0_0 + tim1_0_2;
	       tre2_1_0 = tre1_0_0 - tre1_0_2;
	       tim2_1_0 = tim1_0_0 - tim1_0_2;
	       tre2_0_1 = tre1_0_1 + tre1_0_3;
	       tim2_0_1 = tim1_0_1 + tim1_0_3;
	       tre2_1_1 = tre1_0_1 - tre1_0_3;
	       tim2_1_1 = tim1_0_1 - tim1_0_3;
	       c_re(out[4 * ostride]) = tre2_0_0 + tre2_0_1;
	       c_im(out[4 * ostride]) = tim2_0_0 + tim2_0_1;
	       c_re(out[36 * ostride]) = tre2_0_0 - tre2_0_1;
	       c_im(out[36 * ostride]) = tim2_0_0 - tim2_0_1;
	       c_re(out[20 * ostride]) = tre2_1_0 + tim2_1_1;
	       c_im(out[20 * ostride]) = tim2_1_0 - tre2_1_1;
	       c_re(out[52 * ostride]) = tre2_1_0 - tim2_1_1;
	       c_im(out[52 * ostride]) = tim2_1_0 + tre2_1_1;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_1_0 + tim1_1_2;
	       tim2_0_0 = tim1_1_0 - tre1_1_2;
	       tre2_1_0 = tre1_1_0 - tim1_1_2;
	       tim2_1_0 = tim1_1_0 + tre1_1_2;
	       {
		    FFTW_REAL tre3_0_0;
		    FFTW_REAL tim3_0_0;
		    FFTW_REAL tre3_1_0;
		    FFTW_REAL tim3_1_0;
		    tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 + tim1_1_1);
		    tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 - tre1_1_1);
		    tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 - tre1_1_3);
		    tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 + tre1_1_3);
		    tre2_0_1 = tre3_0_0 + tre3_1_0;
		    tim2_0_1 = tim3_0_0 - tim3_1_0;
		    tre2_1_1 = tre3_0_0 - tre3_1_0;
		    tim2_1_1 = tim3_0_0 + tim3_1_0;
	       }
	       c_re(out[12 * ostride]) = tre2_0_0 + tre2_0_1;
	       c_im(out[12 * ostride]) = tim2_0_0 + tim2_0_1;
	       c_re(out[44 * ostride]) = tre2_0_0 - tre2_0_1;
	       c_im(out[44 * ostride]) = tim2_0_0 - tim2_0_1;
	       c_re(out[28 * ostride]) = tre2_1_0 + tim2_1_1;
	       c_im(out[28 * ostride]) = tim2_1_0 - tre2_1_1;
	       c_re(out[60 * ostride]) = tre2_1_0 - tim2_1_1;
	       c_im(out[60 * ostride]) = tim2_1_0 + tre2_1_1;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_0_2;
	  FFTW_REAL tim1_0_2;
	  FFTW_REAL tre1_0_3;
	  FFTW_REAL tim1_0_3;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  FFTW_REAL tre1_1_2;
	  FFTW_REAL tim1_1_2;
	  FFTW_REAL tre1_1_3;
	  FFTW_REAL tim1_1_3;
	  {
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_1_0 = (((FFTW_REAL) FFTW_K923879532) * tim0_5_4) - (((FFTW_REAL) FFTW_K382683432) * tre0_5_4);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tim0_5_4) + (((FFTW_REAL) FFTW_K923879532) * tre0_5_4);
	       tre1_0_0 = tre0_5_0 + tre2_1_0;
	       tim1_0_0 = tim0_5_0 - tim2_1_0;
	       tre1_1_0 = tre0_5_0 - tre2_1_0;
	       tim1_1_0 = tim0_5_0 + tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K881921264) * tre0_5_1) + (((FFTW_REAL) FFTW_K471396736) * tim0_5_1);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K881921264) * tim0_5_1) - (((FFTW_REAL) FFTW_K471396736) * tre0_5_1);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K634393284) * tim0_5_5) - (((FFTW_REAL) FFTW_K773010453) * tre0_5_5);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K773010453) * tim0_5_5) + (((FFTW_REAL) FFTW_K634393284) * tre0_5_5);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 - tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 + tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K555570233) * tre0_5_2) + (((FFTW_REAL) FFTW_K831469612) * tim0_5_2);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K555570233) * tim0_5_2) - (((FFTW_REAL) FFTW_K831469612) * tre0_5_2);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K195090322) * tim0_5_6) - (((FFTW_REAL) FFTW_K980785280) * tre0_5_6);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K980785280) * tim0_5_6) + (((FFTW_REAL) FFTW_K195090322) * tre0_5_6);
	       tre1_0_2 = tre2_0_0 + tre2_1_0;
	       tim1_0_2 = tim2_0_0 - tim2_1_0;
	       tre1_1_2 = tre2_0_0 - tre2_1_0;
	       tim1_1_2 = tim2_0_0 + tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K098017140) * tre0_5_3) + (((FFTW_REAL) FFTW_K995184726) * tim0_5_3);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K098017140) * tim0_5_3) - (((FFTW_REAL) FFTW_K995184726) * tre0_5_3);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K956940335) * tre0_5_7) + (((FFTW_REAL) FFTW_K290284677) * tim0_5_7);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K290284677) * tre0_5_7) - (((FFTW_REAL) FFTW_K956940335) * tim0_5_7);
	       tre1_0_3 = tre2_0_0 - tre2_1_0;
	       tim1_0_3 = tim2_0_0 + tim2_1_0;
	       tre1_1_3 = tre2_0_0 + tre2_1_0;
	       tim1_1_3 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_0_0 + tre1_0_2;
	       tim2_0_0 = tim1_0_0 + tim1_0_2;
	       tre2_1_0 = tre1_0_0 - tre1_0_2;
	       tim2_1_0 = tim1_0_0 - tim1_0_2;
	       tre2_0_1 = tre1_0_1 + tre1_0_3;
	       tim2_0_1 = tim1_0_1 + tim1_0_3;
	       tre2_1_1 = tre1_0_1 - tre1_0_3;
	       tim2_1_1 = tim1_0_1 - tim1_0_3;
	       c_re(out[5 * ostride]) = tre2_0_0 + tre2_0_1;
	       c_im(out[5 * ostride]) = tim2_0_0 + tim2_0_1;
	       c_re(out[37 * ostride]) = tre2_0_0 - tre2_0_1;
	       c_im(out[37 * ostride]) = tim2_0_0 - tim2_0_1;
	       c_re(out[21 * ostride]) = tre2_1_0 + tim2_1_1;
	       c_im(out[21 * ostride]) = tim2_1_0 - tre2_1_1;
	       c_re(out[53 * ostride]) = tre2_1_0 - tim2_1_1;
	       c_im(out[53 * ostride]) = tim2_1_0 + tre2_1_1;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_1_0 + tim1_1_2;
	       tim2_0_0 = tim1_1_0 - tre1_1_2;
	       tre2_1_0 = tre1_1_0 - tim1_1_2;
	       tim2_1_0 = tim1_1_0 + tre1_1_2;
	       {
		    FFTW_REAL tre3_0_0;
		    FFTW_REAL tim3_0_0;
		    FFTW_REAL tre3_1_0;
		    FFTW_REAL tim3_1_0;
		    tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 + tim1_1_1);
		    tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 - tre1_1_1);
		    tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 - tre1_1_3);
		    tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 + tre1_1_3);
		    tre2_0_1 = tre3_0_0 + tre3_1_0;
		    tim2_0_1 = tim3_0_0 - tim3_1_0;
		    tre2_1_1 = tre3_0_0 - tre3_1_0;
		    tim2_1_1 = tim3_0_0 + tim3_1_0;
	       }
	       c_re(out[13 * ostride]) = tre2_0_0 + tre2_0_1;
	       c_im(out[13 * ostride]) = tim2_0_0 + tim2_0_1;
	       c_re(out[45 * ostride]) = tre2_0_0 - tre2_0_1;
	       c_im(out[45 * ostride]) = tim2_0_0 - tim2_0_1;
	       c_re(out[29 * ostride]) = tre2_1_0 + tim2_1_1;
	       c_im(out[29 * ostride]) = tim2_1_0 - tre2_1_1;
	       c_re(out[61 * ostride]) = tre2_1_0 - tim2_1_1;
	       c_im(out[61 * ostride]) = tim2_1_0 + tre2_1_1;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_0_2;
	  FFTW_REAL tim1_0_2;
	  FFTW_REAL tre1_0_3;
	  FFTW_REAL tim1_0_3;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  FFTW_REAL tre1_1_2;
	  FFTW_REAL tim1_1_2;
	  FFTW_REAL tre1_1_3;
	  FFTW_REAL tim1_1_3;
	  {
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_6_4 - tre0_6_4);
	       tim2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_6_4 + tre0_6_4);
	       tre1_0_0 = tre0_6_0 + tre2_1_0;
	       tim1_0_0 = tim0_6_0 - tim2_1_0;
	       tre1_1_0 = tre0_6_0 - tre2_1_0;
	       tim1_1_0 = tim0_6_0 + tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K831469612) * tre0_6_1) + (((FFTW_REAL) FFTW_K555570233) * tim0_6_1);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K831469612) * tim0_6_1) - (((FFTW_REAL) FFTW_K555570233) * tre0_6_1);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K195090322) * tim0_6_5) - (((FFTW_REAL) FFTW_K980785280) * tre0_6_5);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K980785280) * tim0_6_5) + (((FFTW_REAL) FFTW_K195090322) * tre0_6_5);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 - tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 + tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K382683432) * tre0_6_2) + (((FFTW_REAL) FFTW_K923879532) * tim0_6_2);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K382683432) * tim0_6_2) - (((FFTW_REAL) FFTW_K923879532) * tre0_6_2);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K923879532) * tre0_6_6) + (((FFTW_REAL) FFTW_K382683432) * tim0_6_6);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tre0_6_6) - (((FFTW_REAL) FFTW_K923879532) * tim0_6_6);
	       tre1_0_2 = tre2_0_0 - tre2_1_0;
	       tim1_0_2 = tim2_0_0 + tim2_1_0;
	       tre1_1_2 = tre2_0_0 + tre2_1_0;
	       tim1_1_2 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K980785280) * tim0_6_3) - (((FFTW_REAL) FFTW_K195090322) * tre0_6_3);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K195090322) * tim0_6_3) + (((FFTW_REAL) FFTW_K980785280) * tre0_6_3);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K555570233) * tre0_6_7) + (((FFTW_REAL) FFTW_K831469612) * tim0_6_7);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K831469612) * tre0_6_7) - (((FFTW_REAL) FFTW_K555570233) * tim0_6_7);
	       tre1_0_3 = tre2_0_0 - tre2_1_0;
	       tim1_0_3 = tim2_1_0 - tim2_0_0;
	       tre1_1_3 = tre2_0_0 + tre2_1_0;
	       tim1_1_3 = (-(tim2_0_0 + tim2_1_0));
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_0_0 + tre1_0_2;
	       tim2_0_0 = tim1_0_0 + tim1_0_2;
	       tre2_1_0 = tre1_0_0 - tre1_0_2;
	       tim2_1_0 = tim1_0_0 - tim1_0_2;
	       tre2_0_1 = tre1_0_1 + tre1_0_3;
	       tim2_0_1 = tim1_0_1 + tim1_0_3;
	       tre2_1_1 = tre1_0_1 - tre1_0_3;
	       tim2_1_1 = tim1_0_1 - tim1_0_3;
	       c_re(out[6 * ostride]) = tre2_0_0 + tre2_0_1;
	       c_im(out[6 * ostride]) = tim2_0_0 + tim2_0_1;
	       c_re(out[38 * ostride]) = tre2_0_0 - tre2_0_1;
	       c_im(out[38 * ostride]) = tim2_0_0 - tim2_0_1;
	       c_re(out[22 * ostride]) = tre2_1_0 + tim2_1_1;
	       c_im(out[22 * ostride]) = tim2_1_0 - tre2_1_1;
	       c_re(out[54 * ostride]) = tre2_1_0 - tim2_1_1;
	       c_im(out[54 * ostride]) = tim2_1_0 + tre2_1_1;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_1_0 + tim1_1_2;
	       tim2_0_0 = tim1_1_0 - tre1_1_2;
	       tre2_1_0 = tre1_1_0 - tim1_1_2;
	       tim2_1_0 = tim1_1_0 + tre1_1_2;
	       {
		    FFTW_REAL tre3_0_0;
		    FFTW_REAL tim3_0_0;
		    FFTW_REAL tre3_1_0;
		    FFTW_REAL tim3_1_0;
		    tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 + tim1_1_1);
		    tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 - tre1_1_1);
		    tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 - tre1_1_3);
		    tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 + tre1_1_3);
		    tre2_0_1 = tre3_0_0 + tre3_1_0;
		    tim2_0_1 = tim3_0_0 - tim3_1_0;
		    tre2_1_1 = tre3_0_0 - tre3_1_0;
		    tim2_1_1 = tim3_0_0 + tim3_1_0;
	       }
	       c_re(out[14 * ostride]) = tre2_0_0 + tre2_0_1;
	       c_im(out[14 * ostride]) = tim2_0_0 + tim2_0_1;
	       c_re(out[46 * ostride]) = tre2_0_0 - tre2_0_1;
	       c_im(out[46 * ostride]) = tim2_0_0 - tim2_0_1;
	       c_re(out[30 * ostride]) = tre2_1_0 + tim2_1_1;
	       c_im(out[30 * ostride]) = tim2_1_0 - tre2_1_1;
	       c_re(out[62 * ostride]) = tre2_1_0 - tim2_1_1;
	       c_im(out[62 * ostride]) = tim2_1_0 + tre2_1_1;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_0_2;
	  FFTW_REAL tim1_0_2;
	  FFTW_REAL tre1_0_3;
	  FFTW_REAL tim1_0_3;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  FFTW_REAL tre1_1_2;
	  FFTW_REAL tim1_1_2;
	  FFTW_REAL tre1_1_3;
	  FFTW_REAL tim1_1_3;
	  {
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tim0_7_4) - (((FFTW_REAL) FFTW_K923879532) * tre0_7_4);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K923879532) * tim0_7_4) + (((FFTW_REAL) FFTW_K382683432) * tre0_7_4);
	       tre1_0_0 = tre0_7_0 + tre2_1_0;
	       tim1_0_0 = tim0_7_0 - tim2_1_0;
	       tre1_1_0 = tre0_7_0 - tre2_1_0;
	       tim1_1_0 = tim0_7_0 + tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K773010453) * tre0_7_1) + (((FFTW_REAL) FFTW_K634393284) * tim0_7_1);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K773010453) * tim0_7_1) - (((FFTW_REAL) FFTW_K634393284) * tre0_7_1);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K956940335) * tre0_7_5) + (((FFTW_REAL) FFTW_K290284677) * tim0_7_5);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K290284677) * tre0_7_5) - (((FFTW_REAL) FFTW_K956940335) * tim0_7_5);
	       tre1_0_1 = tre2_0_0 - tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 + tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K195090322) * tre0_7_2) + (((FFTW_REAL) FFTW_K980785280) * tim0_7_2);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K195090322) * tim0_7_2) - (((FFTW_REAL) FFTW_K980785280) * tre0_7_2);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K555570233) * tre0_7_6) + (((FFTW_REAL) FFTW_K831469612) * tim0_7_6);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K831469612) * tre0_7_6) - (((FFTW_REAL) FFTW_K555570233) * tim0_7_6);
	       tre1_0_2 = tre2_0_0 - tre2_1_0;
	       tim1_0_2 = tim2_0_0 + tim2_1_0;
	       tre1_1_2 = tre2_0_0 + tre2_1_0;
	       tim1_1_2 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K881921264) * tim0_7_3) - (((FFTW_REAL) FFTW_K471396736) * tre0_7_3);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K471396736) * tim0_7_3) + (((FFTW_REAL) FFTW_K881921264) * tre0_7_3);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K098017140) * tre0_7_7) - (((FFTW_REAL) FFTW_K995184726) * tim0_7_7);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K098017140) * tim0_7_7) + (((FFTW_REAL) FFTW_K995184726) * tre0_7_7);
	       tre1_0_3 = tre2_0_0 + tre2_1_0;
	       tim1_0_3 = tim2_1_0 - tim2_0_0;
	       tre1_1_3 = tre2_0_0 - tre2_1_0;
	       tim1_1_3 = (-(tim2_0_0 + tim2_1_0));
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_0_0 + tre1_0_2;
	       tim2_0_0 = tim1_0_0 + tim1_0_2;
	       tre2_1_0 = tre1_0_0 - tre1_0_2;
	       tim2_1_0 = tim1_0_0 - tim1_0_2;
	       tre2_0_1 = tre1_0_1 + tre1_0_3;
	       tim2_0_1 = tim1_0_1 + tim1_0_3;
	       tre2_1_1 = tre1_0_1 - tre1_0_3;
	       tim2_1_1 = tim1_0_1 - tim1_0_3;
	       c_re(out[7 * ostride]) = tre2_0_0 + tre2_0_1;
	       c_im(out[7 * ostride]) = tim2_0_0 + tim2_0_1;
	       c_re(out[39 * ostride]) = tre2_0_0 - tre2_0_1;
	       c_im(out[39 * ostride]) = tim2_0_0 - tim2_0_1;
	       c_re(out[23 * ostride]) = tre2_1_0 + tim2_1_1;
	       c_im(out[23 * ostride]) = tim2_1_0 - tre2_1_1;
	       c_re(out[55 * ostride]) = tre2_1_0 - tim2_1_1;
	       c_im(out[55 * ostride]) = tim2_1_0 + tre2_1_1;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_1_0 + tim1_1_2;
	       tim2_0_0 = tim1_1_0 - tre1_1_2;
	       tre2_1_0 = tre1_1_0 - tim1_1_2;
	       tim2_1_0 = tim1_1_0 + tre1_1_2;
	       {
		    FFTW_REAL tre3_0_0;
		    FFTW_REAL tim3_0_0;
		    FFTW_REAL tre3_1_0;
		    FFTW_REAL tim3_1_0;
		    tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 + tim1_1_1);
		    tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 - tre1_1_1);
		    tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 - tre1_1_3);
		    tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 + tre1_1_3);
		    tre2_0_1 = tre3_0_0 + tre3_1_0;
		    tim2_0_1 = tim3_0_0 - tim3_1_0;
		    tre2_1_1 = tre3_0_0 - tre3_1_0;
		    tim2_1_1 = tim3_0_0 + tim3_1_0;
	       }
	       c_re(out[15 * ostride]) = tre2_0_0 + tre2_0_1;
	       c_im(out[15 * ostride]) = tim2_0_0 + tim2_0_1;
	       c_re(out[47 * ostride]) = tre2_0_0 - tre2_0_1;
	       c_im(out[47 * ostride]) = tim2_0_0 - tim2_0_1;
	       c_re(out[31 * ostride]) = tre2_1_0 + tim2_1_1;
	       c_im(out[31 * ostride]) = tim2_1_0 - tre2_1_1;
	       c_re(out[63 * ostride]) = tre2_1_0 - tim2_1_1;
	       c_im(out[63 * ostride]) = tim2_1_0 + tre2_1_1;
	  }
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 90 FP additions and 36 FP multiplications */

void fftw_no_twiddle_7(const FFTW_COMPLEX *in, FFTW_COMPLEX *out, int istride, int ostride)
{
     FFTW_REAL tre0_0_0;
     FFTW_REAL tim0_0_0;
     FFTW_REAL tre0_1_0;
     FFTW_REAL tim0_1_0;
     FFTW_REAL tre0_2_0;
     FFTW_REAL tim0_2_0;
     FFTW_REAL tre0_3_0;
     FFTW_REAL tim0_3_0;
     FFTW_REAL tre0_4_0;
     FFTW_REAL tim0_4_0;
     FFTW_REAL tre0_5_0;
     FFTW_REAL tim0_5_0;
     FFTW_REAL tre0_6_0;
     FFTW_REAL tim0_6_0;
     tre0_0_0 = c_re(in[0]);
     tim0_0_0 = c_im(in[0]);
     tre0_1_0 = c_re(in[istride]);
     tim0_1_0 = c_im(in[istride]);
     tre0_2_0 = c_re(in[2 * istride]);
     tim0_2_0 = c_im(in[2 * istride]);
     tre0_3_0 = c_re(in[3 * istride]);
     tim0_3_0 = c_im(in[3 * istride]);
     tre0_4_0 = c_re(in[4 * istride]);
     tim0_4_0 = c_im(in[4 * istride]);
     tre0_5_0 = c_re(in[5 * istride]);
     tim0_5_0 = c_im(in[5 * istride]);
     tre0_6_0 = c_re(in[6 * istride]);
     tim0_6_0 = c_im(in[6 * istride]);
     c_re(out[0]) = tre0_0_0 + tre0_1_0 + tre0_2_0 + tre0_3_0 + tre0_4_0 + tre0_5_0 + tre0_6_0;
     c_im(out[0]) = tim0_0_0 + tim0_1_0 + tim0_2_0 + tim0_3_0 + tim0_4_0 + tim0_5_0 + tim0_6_0;
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tre1_1_0;
	  tre1_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K623489801) * (tre0_1_0 + tre0_6_0)) - (((FFTW_REAL) FFTW_K900968867) * (tre0_3_0 + tre0_4_0)) - (((FFTW_REAL) FFTW_K222520933) * (tre0_2_0 + tre0_5_0));
	  tre1_1_0 = (((FFTW_REAL) FFTW_K781831482) * (tim0_1_0 - tim0_6_0)) + (((FFTW_REAL) FFTW_K974927912) * (tim0_2_0 - tim0_5_0)) + (((FFTW_REAL) FFTW_K433883739) * (tim0_3_0 - tim0_4_0));
	  c_re(out[ostride]) = tre1_0_0 + tre1_1_0;
	  c_re(out[6 * ostride]) = tre1_0_0 - tre1_1_0;
     }
     {
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tim1_1_0;
	  tim1_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K623489801) * (tim0_1_0 + tim0_6_0)) - (((FFTW_REAL) FFTW_K900968867) * (tim0_3_0 + tim0_4_0)) - (((FFTW_REAL) FFTW_K222520933) * (tim0_2_0 + tim0_5_0));
	  tim1_1_0 = (((FFTW_REAL) FFTW_K781831482) * (tre0_6_0 - tre0_1_0)) + (((FFTW_REAL) FFTW_K974927912) * (tre0_5_0 - tre0_2_0)) + (((FFTW_REAL) FFTW_K433883739) * (tre0_4_0 - tre0_3_0));
	  c_im(out[ostride]) = tim1_0_0 + tim1_1_0;
	  c_im(out[6 * ostride]) = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tre1_1_0;
	  tre1_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K623489801) * (tre0_3_0 + tre0_4_0)) - (((FFTW_REAL) FFTW_K900968867) * (tre0_2_0 + tre0_5_0)) - (((FFTW_REAL) FFTW_K222520933) * (tre0_1_0 + tre0_6_0));
	  tre1_1_0 = (((FFTW_REAL) FFTW_K974927912) * (tim0_1_0 - tim0_6_0)) + (((FFTW_REAL) FFTW_K433883739) * (tim0_5_0 - tim0_2_0)) + (((FFTW_REAL) FFTW_K781831482) * (tim0_4_0 - tim0_3_0));
	  c_re(out[2 * ostride]) = tre1_0_0 + tre1_1_0;
	  c_re(out[5 * ostride]) = tre1_0_0 - tre1_1_0;
     }
     {
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tim1_1_0;
	  tim1_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K623489801) * (tim0_3_0 + tim0_4_0)) - (((FFTW_REAL) FFTW_K900968867) * (tim0_2_0 + tim0_5_0)) - (((FFTW_REAL) FFTW_K222520933) * (tim0_1_0 + tim0_6_0));
	  tim1_1_0 = (((FFTW_REAL) FFTW_K974927912) * (tre0_6_0 - tre0_1_0)) + (((FFTW_REAL) FFTW_K433883739) * (tre0_2_0 - tre0_5_0)) + (((FFTW_REAL) FFTW_K781831482) * (tre0_3_0 - tre0_4_0));
	  c_im(out[2 * ostride]) = tim1_0_0 + tim1_1_0;
	  c_im(out[5 * ostride]) = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tre1_1_0;
	  tre1_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K623489801) * (tre0_2_0 + tre0_5_0)) - (((FFTW_REAL) FFTW_K222520933) * (tre0_3_0 + tre0_4_0)) - (((FFTW_REAL) FFTW_K900968867) * (tre0_1_0 + tre0_6_0));
	  tre1_1_0 = (((FFTW_REAL) FFTW_K433883739) * (tim0_1_0 - tim0_6_0)) + (((FFTW_REAL) FFTW_K781831482) * (tim0_5_0 - tim0_2_0)) + (((FFTW_REAL) FFTW_K974927912) * (tim0_3_0 - tim0_4_0));
	  c_re(out[3 * ostride]) = tre1_0_0 + tre1_1_0;
	  c_re(out[4 * ostride]) = tre1_0_0 - tre1_1_0;
     }
     {
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tim1_1_0;
	  tim1_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K623489801) * (tim0_2_0 + tim0_5_0)) - (((FFTW_REAL) FFTW_K222520933) * (tim0_3_0 + tim0_4_0)) - (((FFTW_REAL) FFTW_K900968867) * (tim0_1_0 + tim0_6_0));
	  tim1_1_0 = (((FFTW_REAL) FFTW_K433883739) * (tre0_6_0 - tre0_1_0)) + (((FFTW_REAL) FFTW_K781831482) * (tre0_2_0 - tre0_5_0)) + (((FFTW_REAL) FFTW_K974927912) * (tre0_4_0 - tre0_3_0));
	  c_im(out[3 * ostride]) = tim1_0_0 + tim1_1_0;
	  c_im(out[4 * ostride]) = tim1_0_0 - tim1_1_0;
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 52 FP additions and 4 FP multiplications */

void fftw_no_twiddle_8(const FFTW_COMPLEX *in, FFTW_COMPLEX *out, int istride, int ostride)
{
     FFTW_REAL tre0_0_0;
     FFTW_REAL tim0_0_0;
     FFTW_REAL tre0_0_1;
     FFTW_REAL tim0_0_1;
     FFTW_REAL tre0_0_2;
     FFTW_REAL tim0_0_2;
     FFTW_REAL tre0_0_3;
     FFTW_REAL tim0_0_3;
     FFTW_REAL tre0_1_0;
     FFTW_REAL tim0_1_0;
     FFTW_REAL tre0_1_1;
     FFTW_REAL tim0_1_1;
     FFTW_REAL tre0_1_2;
     FFTW_REAL tim0_1_2;
     FFTW_REAL tre0_1_3;
     FFTW_REAL tim0_1_3;
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  tre1_0_0 = c_re(in[0]);
	  tim1_0_0 = c_im(in[0]);
	  tre1_1_0 = c_re(in[4 * istride]);
	  tim1_1_0 = c_im(in[4 * istride]);
	  tre0_0_0 = tre1_0_0 + tre1_1_0;
	  tim0_0_0 = tim1_0_0 + tim1_1_0;
	  tre0_1_0 = tre1_0_0 - tre1_1_0;
	  tim0_1_0 = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  tre1_0_0 = c_re(in[istride]);
	  tim1_0_0 = c_im(in[istride]);
	  tre1_1_0 = c_re(in[5 * istride]);
	  tim1_1_0 = c_im(in[5 * istride]);
	  tre0_0_1 = tre1_0_0 + tre1_1_0;
	  tim0_0_1 = tim1_0_0 + tim1_1_0;
	  tre0_1_1 = tre1_0_0 - tre1_1_0;
	  tim0_1_1 = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  tre1_0_0 = c_re(in[2 * istride]);
	  tim1_0_0 = c_im(in[2 * istride]);
	  tre1_1_0 = c_re(in[6 * istride]);
	  tim1_1_0 = c_im(in[6 * istride]);
	  tre0_0_2 = tre1_0_0 + tre1_1_0;
	  tim0_0_2 = tim1_0_0 + tim1_1_0;
	  tre0_1_2 = tre1_0_0 - tre1_1_0;
	  tim0_1_2 = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  tre1_0_0 = c_re(in[3 * istride]);
	  tim1_0_0 = c_im(in[3 * istride]);
	  tre1_1_0 = c_re(in[7 * istride]);
	  tim1_1_0 = c_im(in[7 * istride]);
	  tre0_0_3 = tre1_0_0 + tre1_1_0;
	  tim0_0_3 = tim1_0_0 + tim1_1_0;
	  tre0_1_3 = tre1_0_0 - tre1_1_0;
	  tim0_1_3 = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  tre1_0_0 = tre0_0_0 + tre0_0_2;
	  tim1_0_0 = tim0_0_0 + tim0_0_2;
	  tre1_1_0 = tre0_0_0 - tre0_0_2;
	  tim1_1_0 = tim0_0_0 - tim0_0_2;
	  tre1_0_1 = tre0_0_1 + tre0_0_3;
	  tim1_0_1 = tim0_0_1 + tim0_0_3;
	  tre1_1_1 = tre0_0_1 - tre0_0_3;
	  tim1_1_1 = tim0_0_1 - tim0_0_3;
	  c_re(out[0]) = tre1_0_0 + tre1_0_1;
	  c_im(out[0]) = tim1_0_0 + tim1_0_1;
	  c_re(out[4 * ostride]) = tre1_0_0 - tre1_0_1;
	  c_im(out[4 * ostride]) = tim1_0_0 - tim1_0_1;
	  c_re(out[2 * ostride]) = tre1_1_0 + tim1_1_1;
	  c_im(out[2 * ostride]) = tim1_1_0 - tre1_1_1;
	  c_re(out[6 * ostride]) = tre1_1_0 - tim1_1_1;
	  c_im(out[6 * ostride]) = tim1_1_0 + tre1_1_1;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  tre1_0_0 = tre0_1_0 + tim0_1_2;
	  tim1_0_0 = tim0_1_0 - tre0_1_2;
	  tre1_1_0 = tre0_1_0 - tim0_1_2;
	  tim1_1_0 = tim0_1_0 + tre0_1_2;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_1_1 + tim0_1_1);
	       tim2_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_1_1 - tre0_1_1);
	       tre2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_1_3 - tre0_1_3);
	       tim2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_1_3 + tre0_1_3);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 - tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 + tim2_1_0;
	  }
	  c_re(out[ostride]) = tre1_0_0 + tre1_0_1;
	  c_im(out[ostride]) = tim1_0_0 + tim1_0_1;
	  c_re(out[5 * ostride]) = tre1_0_0 - tre1_0_1;
	  c_im(out[5 * ostride]) = tim1_0_0 - tim1_0_1;
	  c_re(out[3 * ostride]) = tre1_1_0 + tim1_1_1;
	  c_im(out[3 * ostride]) = tim1_1_0 - tre1_1_1;
	  c_re(out[7 * ostride]) = tre1_1_0 - tim1_1_1;
	  c_im(out[7 * ostride]) = tim1_1_0 + tre1_1_1;
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 92 FP additions and 40 FP multiplications */

void fftw_no_twiddle_9(const FFTW_COMPLEX *in, FFTW_COMPLEX *out, int istride, int ostride)
{
     FFTW_REAL tre0_0_0;
     FFTW_REAL tim0_0_0;
     FFTW_REAL tre0_0_1;
     FFTW_REAL tim0_0_1;
     FFTW_REAL tre0_0_2;
     FFTW_REAL tim0_0_2;
     FFTW_REAL tre0_1_0;
     FFTW_REAL tim0_1_0;
     FFTW_REAL tre0_1_1;
     FFTW_REAL tim0_1_1;
     FFTW_REAL tre0_1_2;
     FFTW_REAL tim0_1_2;
     FFTW_REAL tre0_2_0;
     FFTW_REAL tim0_2_0;
     FFTW_REAL tre0_2_1;
     FFTW_REAL tim0_2_1;
     FFTW_REAL tre0_2_2;
     FFTW_REAL tim0_2_2;
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_2_0;
	  FFTW_REAL tim1_2_0;
	  tre1_0_0 = c_re(in[0]);
	  tim1_0_0 = c_im(in[0]);
	  tre1_1_0 = c_re(in[3 * istride]);
	  tim1_1_0 = c_im(in[3 * istride]);
	  tre1_2_0 = c_re(in[6 * istride]);
	  tim1_2_0 = c_im(in[6 * istride]);
	  tre0_0_0 = tre1_0_0 + tre1_1_0 + tre1_2_0;
	  tim0_0_0 = tim1_0_0 + tim1_1_0 + tim1_2_0;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tre2_1_0;
	       tre2_0_0 = tre1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tre1_1_0 + tre1_2_0));
	       tre2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tim1_1_0 - tim1_2_0);
	       tre0_1_0 = tre2_0_0 + tre2_1_0;
	       tre0_2_0 = tre2_0_0 - tre2_1_0;
	  }
	  {
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tim2_1_0;
	       tim2_0_0 = tim1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tim1_1_0 + tim1_2_0));
	       tim2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tre1_2_0 - tre1_1_0);
	       tim0_1_0 = tim2_0_0 + tim2_1_0;
	       tim0_2_0 = tim2_0_0 - tim2_1_0;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_2_0;
	  FFTW_REAL tim1_2_0;
	  tre1_0_0 = c_re(in[istride]);
	  tim1_0_0 = c_im(in[istride]);
	  tre1_1_0 = c_re(in[4 * istride]);
	  tim1_1_0 = c_im(in[4 * istride]);
	  tre1_2_0 = c_re(in[7 * istride]);
	  tim1_2_0 = c_im(in[7 * istride]);
	  tre0_0_1 = tre1_0_0 + tre1_1_0 + tre1_2_0;
	  tim0_0_1 = tim1_0_0 + tim1_1_0 + tim1_2_0;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tre2_1_0;
	       tre2_0_0 = tre1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tre1_1_0 + tre1_2_0));
	       tre2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tim1_1_0 - tim1_2_0);
	       tre0_1_1 = tre2_0_0 + tre2_1_0;
	       tre0_2_1 = tre2_0_0 - tre2_1_0;
	  }
	  {
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tim2_1_0;
	       tim2_0_0 = tim1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tim1_1_0 + tim1_2_0));
	       tim2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tre1_2_0 - tre1_1_0);
	       tim0_1_1 = tim2_0_0 + tim2_1_0;
	       tim0_2_1 = tim2_0_0 - tim2_1_0;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_2_0;
	  FFTW_REAL tim1_2_0;
	  tre1_0_0 = c_re(in[2 * istride]);
	  tim1_0_0 = c_im(in[2 * istride]);
	  tre1_1_0 = c_re(in[5 * istride]);
	  tim1_1_0 = c_im(in[5 * istride]);
	  tre1_2_0 = c_re(in[8 * istride]);
	  tim1_2_0 = c_im(in[8 * istride]);
	  tre0_0_2 = tre1_0_0 + tre1_1_0 + tre1_2_0;
	  tim0_0_2 = tim1_0_0 + tim1_1_0 + tim1_2_0;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tre2_1_0;
	       tre2_0_0 = tre1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tre1_1_0 + tre1_2_0));
	       tre2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tim1_1_0 - tim1_2_0);
	       tre0_1_2 = tre2_0_0 + tre2_1_0;
	       tre0_2_2 = tre2_0_0 - tre2_1_0;
	  }
	  {
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tim2_1_0;
	       tim2_0_0 = tim1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tim1_1_0 + tim1_2_0));
	       tim2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tre1_2_0 - tre1_1_0);
	       tim0_1_2 = tim2_0_0 + tim2_1_0;
	       tim0_2_2 = tim2_0_0 - tim2_1_0;
	  }
     }
     c_re(out[0]) = tre0_0_0 + tre0_0_1 + tre0_0_2;
     c_im(out[0]) = tim0_0_0 + tim0_0_1 + tim0_0_2;
     {
	  FFTW_REAL tre2_0_0;
	  FFTW_REAL tre2_1_0;
	  tre2_0_0 = tre0_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tre0_0_1 + tre0_0_2));
	  tre2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tim0_0_1 - tim0_0_2);
	  c_re(out[3 * ostride]) = tre2_0_0 + tre2_1_0;
	  c_re(out[6 * ostride]) = tre2_0_0 - tre2_1_0;
     }
     {
	  FFTW_REAL tim2_0_0;
	  FFTW_REAL tim2_1_0;
	  tim2_0_0 = tim0_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tim0_0_1 + tim0_0_2));
	  tim2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tre0_0_2 - tre0_0_1);
	  c_im(out[3 * ostride]) = tim2_0_0 + tim2_1_0;
	  c_im(out[6 * ostride]) = tim2_0_0 - tim2_1_0;
     }
     {
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_2_0;
	  FFTW_REAL tim1_2_0;
	  tre1_1_0 = (((FFTW_REAL) FFTW_K766044443) * tre0_1_1) + (((FFTW_REAL) FFTW_K642787609) * tim0_1_1);
	  tim1_1_0 = (((FFTW_REAL) FFTW_K766044443) * tim0_1_1) - (((FFTW_REAL) FFTW_K642787609) * tre0_1_1);
	  tre1_2_0 = (((FFTW_REAL) FFTW_K173648177) * tre0_1_2) + (((FFTW_REAL) FFTW_K984807753) * tim0_1_2);
	  tim1_2_0 = (((FFTW_REAL) FFTW_K173648177) * tim0_1_2) - (((FFTW_REAL) FFTW_K984807753) * tre0_1_2);
	  c_re(out[ostride]) = tre0_1_0 + tre1_1_0 + tre1_2_0;
	  c_im(out[ostride]) = tim0_1_0 + tim1_1_0 + tim1_2_0;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tre2_1_0;
	       tre2_0_0 = tre0_1_0 - (((FFTW_REAL) FFTW_K499999999) * (tre1_1_0 + tre1_2_0));
	       tre2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tim1_1_0 - tim1_2_0);
	       c_re(out[4 * ostride]) = tre2_0_0 + tre2_1_0;
	       c_re(out[7 * ostride]) = tre2_0_0 - tre2_1_0;
	  }
	  {
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tim2_1_0;
	       tim2_0_0 = tim0_1_0 - (((FFTW_REAL) FFTW_K499999999) * (tim1_1_0 + tim1_2_0));
	       tim2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tre1_2_0 - tre1_1_0);
	       c_im(out[4 * ostride]) = tim2_0_0 + tim2_1_0;
	       c_im(out[7 * ostride]) = tim2_0_0 - tim2_1_0;
	  }
     }
     {
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_2_0;
	  FFTW_REAL tim1_2_0;
	  tre1_1_0 = (((FFTW_REAL) FFTW_K173648177) * tre0_2_1) + (((FFTW_REAL) FFTW_K984807753) * tim0_2_1);
	  tim1_1_0 = (((FFTW_REAL) FFTW_K173648177) * tim0_2_1) - (((FFTW_REAL) FFTW_K984807753) * tre0_2_1);
	  tre1_2_0 = (((FFTW_REAL) FFTW_K342020143) * tim0_2_2) - (((FFTW_REAL) FFTW_K939692620) * tre0_2_2);
	  tim1_2_0 = (((FFTW_REAL) FFTW_K939692620) * tim0_2_2) + (((FFTW_REAL) FFTW_K342020143) * tre0_2_2);
	  c_re(out[2 * ostride]) = tre0_2_0 + tre1_1_0 + tre1_2_0;
	  c_im(out[2 * ostride]) = tim0_2_0 + tim1_1_0 - tim1_2_0;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tre2_1_0;
	       tre2_0_0 = tre0_2_0 - (((FFTW_REAL) FFTW_K499999999) * (tre1_1_0 + tre1_2_0));
	       tre2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tim1_1_0 + tim1_2_0);
	       c_re(out[5 * ostride]) = tre2_0_0 + tre2_1_0;
	       c_re(out[8 * ostride]) = tre2_0_0 - tre2_1_0;
	  }
	  {
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tim2_1_0;
	       tim2_0_0 = tim0_2_0 + (((FFTW_REAL) FFTW_K499999999) * (tim1_2_0 - tim1_1_0));
	       tim2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tre1_2_0 - tre1_1_0);
	       c_im(out[5 * ostride]) = tim2_0_0 + tim2_1_0;
	       c_im(out[8 * ostride]) = tim2_0_0 - tim2_1_0;
	  }
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 0 FP additions and 0 FP multiplications */

void fftwi_no_twiddle_1(const FFTW_COMPLEX *in, FFTW_COMPLEX *out, int istride, int ostride)
{
     FFTW_REAL tre0_0_0;
     FFTW_REAL tim0_0_0;
     tre0_0_0 = c_re(in[0]);
     tim0_0_0 = c_im(in[0]);
     c_re(out[0]) = tre0_0_0;
     c_im(out[0]) = tim0_0_0;
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 108 FP additions and 32 FP multiplications */

void fftwi_no_twiddle_10(const FFTW_COMPLEX *in, FFTW_COMPLEX *out, int istride, int ostride)
{
     FFTW_REAL tre0_0_0;
     FFTW_REAL tim0_0_0;
     FFTW_REAL tre0_0_1;
     FFTW_REAL tim0_0_1;
     FFTW_REAL tre0_0_2;
     FFTW_REAL tim0_0_2;
     FFTW_REAL tre0_0_3;
     FFTW_REAL tim0_0_3;
     FFTW_REAL tre0_0_4;
     FFTW_REAL tim0_0_4;
     FFTW_REAL tre0_1_0;
     FFTW_REAL tim0_1_0;
     FFTW_REAL tre0_1_1;
     FFTW_REAL tim0_1_1;
     FFTW_REAL tre0_1_2;
     FFTW_REAL tim0_1_2;
     FFTW_REAL tre0_1_3;
     FFTW_REAL tim0_1_3;
     FFTW_REAL tre0_1_4;
     FFTW_REAL tim0_1_4;
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  tre1_0_0 = c_re(in[0]);
	  tim1_0_0 = c_im(in[0]);
	  tre1_1_0 = c_re(in[5 * istride]);
	  tim1_1_0 = c_im(in[5 * istride]);
	  tre0_0_0 = tre1_0_0 + tre1_1_0;
	  tim0_0_0 = tim1_0_0 + tim1_1_0;
	  tre0_1_0 = tre1_0_0 - tre1_1_0;
	  tim0_1_0 = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  tre1_0_0 = c_re(in[2 * istride]);
	  tim1_0_0 = c_im(in[2 * istride]);
	  tre1_1_0 = c_re(in[7 * istride]);
	  tim1_1_0 = c_im(in[7 * istride]);
	  tre0_0_1 = tre1_0_0 + tre1_1_0;
	  tim0_0_1 = tim1_0_0 + tim1_1_0;
	  tre0_1_1 = tre1_0_0 - tre1_1_0;
	  tim0_1_1 = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  tre1_0_0 = c_re(in[4 * istride]);
	  tim1_0_0 = c_im(in[4 * istride]);
	  tre1_1_0 = c_re(in[9 * istride]);
	  tim1_1_0 = c_im(in[9 * istride]);
	  tre0_0_2 = tre1_0_0 + tre1_1_0;
	  tim0_0_2 = tim1_0_0 + tim1_1_0;
	  tre0_1_2 = tre1_0_0 - tre1_1_0;
	  tim0_1_2 = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  tre1_0_0 = c_re(in[6 * istride]);
	  tim1_0_0 = c_im(in[6 * istride]);
	  tre1_1_0 = c_re(in[istride]);
	  tim1_1_0 = c_im(in[istride]);
	  tre0_0_3 = tre1_0_0 + tre1_1_0;
	  tim0_0_3 = tim1_0_0 + tim1_1_0;
	  tre0_1_3 = tre1_0_0 - tre1_1_0;
	  tim0_1_3 = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  tre1_0_0 = c_re(in[8 * istride]);
	  tim1_0_0 = c_im(in[8 * istride]);
	  tre1_1_0 = c_re(in[3 * istride]);
	  tim1_1_0 = c_im(in[3 * istride]);
	  tre0_0_4 = tre1_0_0 + tre1_1_0;
	  tim0_0_4 = tim1_0_0 + tim1_1_0;
	  tre0_1_4 = tre1_0_0 - tre1_1_0;
	  tim0_1_4 = tim1_0_0 - tim1_1_0;
     }
     c_re(out[0]) = tre0_0_0 + tre0_0_1 + tre0_0_2 + tre0_0_3 + tre0_0_4;
     c_im(out[0]) = tim0_0_0 + tim0_0_1 + tim0_0_2 + tim0_0_3 + tim0_0_4;
     {
	  FFTW_REAL tre2_0_0;
	  FFTW_REAL tre2_1_0;
	  tre2_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K309016994) * (tre0_0_1 + tre0_0_4)) - (((FFTW_REAL) FFTW_K809016994) * (tre0_0_2 + tre0_0_3));
	  tre2_1_0 = (((FFTW_REAL) FFTW_K951056516) * (tim0_0_4 - tim0_0_1)) + (((FFTW_REAL) FFTW_K587785252) * (tim0_0_3 - tim0_0_2));
	  c_re(out[6 * ostride]) = tre2_0_0 + tre2_1_0;
	  c_re(out[4 * ostride]) = tre2_0_0 - tre2_1_0;
     }
     {
	  FFTW_REAL tim2_0_0;
	  FFTW_REAL tim2_1_0;
	  tim2_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K309016994) * (tim0_0_1 + tim0_0_4)) - (((FFTW_REAL) FFTW_K809016994) * (tim0_0_2 + tim0_0_3));
	  tim2_1_0 = (((FFTW_REAL) FFTW_K951056516) * (tre0_0_1 - tre0_0_4)) + (((FFTW_REAL) FFTW_K587785252) * (tre0_0_2 - tre0_0_3));
	  c_im(out[6 * ostride]) = tim2_0_0 + tim2_1_0;
	  c_im(out[4 * ostride]) = tim2_0_0 - tim2_1_0;
     }
     {
	  FFTW_REAL tre2_0_0;
	  FFTW_REAL tre2_1_0;
	  tre2_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K309016994) * (tre0_0_2 + tre0_0_3)) - (((FFTW_REAL) FFTW_K809016994) * (tre0_0_1 + tre0_0_4));
	  tre2_1_0 = (((FFTW_REAL) FFTW_K587785252) * (tim0_0_4 - tim0_0_1)) + (((FFTW_REAL) FFTW_K951056516) * (tim0_0_2 - tim0_0_3));
	  c_re(out[2 * ostride]) = tre2_0_0 + tre2_1_0;
	  c_re(out[8 * ostride]) = tre2_0_0 - tre2_1_0;
     }
     {
	  FFTW_REAL tim2_0_0;
	  FFTW_REAL tim2_1_0;
	  tim2_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K309016994) * (tim0_0_2 + tim0_0_3)) - (((FFTW_REAL) FFTW_K809016994) * (tim0_0_1 + tim0_0_4));
	  tim2_1_0 = (((FFTW_REAL) FFTW_K587785252) * (tre0_0_1 - tre0_0_4)) + (((FFTW_REAL) FFTW_K951056516) * (tre0_0_3 - tre0_0_2));
	  c_im(out[2 * ostride]) = tim2_0_0 + tim2_1_0;
	  c_im(out[8 * ostride]) = tim2_0_0 - tim2_1_0;
     }
     c_re(out[5 * ostride]) = tre0_1_0 + tre0_1_1 + tre0_1_2 + tre0_1_3 + tre0_1_4;
     c_im(out[5 * ostride]) = tim0_1_0 + tim0_1_1 + tim0_1_2 + tim0_1_3 + tim0_1_4;
     {
	  FFTW_REAL tre2_0_0;
	  FFTW_REAL tre2_1_0;
	  tre2_0_0 = tre0_1_0 + (((FFTW_REAL) FFTW_K309016994) * (tre0_1_1 + tre0_1_4)) - (((FFTW_REAL) FFTW_K809016994) * (tre0_1_2 + tre0_1_3));
	  tre2_1_0 = (((FFTW_REAL) FFTW_K951056516) * (tim0_1_4 - tim0_1_1)) + (((FFTW_REAL) FFTW_K587785252) * (tim0_1_3 - tim0_1_2));
	  c_re(out[ostride]) = tre2_0_0 + tre2_1_0;
	  c_re(out[9 * ostride]) = tre2_0_0 - tre2_1_0;
     }
     {
	  FFTW_REAL tim2_0_0;
	  FFTW_REAL tim2_1_0;
	  tim2_0_0 = tim0_1_0 + (((FFTW_REAL) FFTW_K309016994) * (tim0_1_1 + tim0_1_4)) - (((FFTW_REAL) FFTW_K809016994) * (tim0_1_2 + tim0_1_3));
	  tim2_1_0 = (((FFTW_REAL) FFTW_K951056516) * (tre0_1_1 - tre0_1_4)) + (((FFTW_REAL) FFTW_K587785252) * (tre0_1_2 - tre0_1_3));
	  c_im(out[ostride]) = tim2_0_0 + tim2_1_0;
	  c_im(out[9 * ostride]) = tim2_0_0 - tim2_1_0;
     }
     {
	  FFTW_REAL tre2_0_0;
	  FFTW_REAL tre2_1_0;
	  tre2_0_0 = tre0_1_0 + (((FFTW_REAL) FFTW_K309016994) * (tre0_1_2 + tre0_1_3)) - (((FFTW_REAL) FFTW_K809016994) * (tre0_1_1 + tre0_1_4));
	  tre2_1_0 = (((FFTW_REAL) FFTW_K587785252) * (tim0_1_4 - tim0_1_1)) + (((FFTW_REAL) FFTW_K951056516) * (tim0_1_2 - tim0_1_3));
	  c_re(out[7 * ostride]) = tre2_0_0 + tre2_1_0;
	  c_re(out[3 * ostride]) = tre2_0_0 - tre2_1_0;
     }
     {
	  FFTW_REAL tim2_0_0;
	  FFTW_REAL tim2_1_0;
	  tim2_0_0 = tim0_1_0 + (((FFTW_REAL) FFTW_K309016994) * (tim0_1_2 + tim0_1_3)) - (((FFTW_REAL) FFTW_K809016994) * (tim0_1_1 + tim0_1_4));
	  tim2_1_0 = (((FFTW_REAL) FFTW_K587785252) * (tre0_1_1 - tre0_1_4)) + (((FFTW_REAL) FFTW_K951056516) * (tre0_1_3 - tre0_1_2));
	  c_im(out[7 * ostride]) = tim2_0_0 + tim2_1_0;
	  c_im(out[3 * ostride]) = tim2_0_0 - tim2_1_0;
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 230 FP additions and 100 FP multiplications */

void fftwi_no_twiddle_11(const FFTW_COMPLEX *in, FFTW_COMPLEX *out, int istride, int ostride)
{
     FFTW_REAL tre0_0_0;
     FFTW_REAL tim0_0_0;
     FFTW_REAL tre0_1_0;
     FFTW_REAL tim0_1_0;
     FFTW_REAL tre0_2_0;
     FFTW_REAL tim0_2_0;
     FFTW_REAL tre0_3_0;
     FFTW_REAL tim0_3_0;
     FFTW_REAL tre0_4_0;
     FFTW_REAL tim0_4_0;
     FFTW_REAL tre0_5_0;
     FFTW_REAL tim0_5_0;
     FFTW_REAL tre0_6_0;
     FFTW_REAL tim0_6_0;
     FFTW_REAL tre0_7_0;
     FFTW_REAL tim0_7_0;
     FFTW_REAL tre0_8_0;
     FFTW_REAL tim0_8_0;
     FFTW_REAL tre0_9_0;
     FFTW_REAL tim0_9_0;
     FFTW_REAL tre0_10_0;
     FFTW_REAL tim0_10_0;
     tre0_0_0 = c_re(in[0]);
     tim0_0_0 = c_im(in[0]);
     tre0_1_0 = c_re(in[istride]);
     tim0_1_0 = c_im(in[istride]);
     tre0_2_0 = c_re(in[2 * istride]);
     tim0_2_0 = c_im(in[2 * istride]);
     tre0_3_0 = c_re(in[3 * istride]);
     tim0_3_0 = c_im(in[3 * istride]);
     tre0_4_0 = c_re(in[4 * istride]);
     tim0_4_0 = c_im(in[4 * istride]);
     tre0_5_0 = c_re(in[5 * istride]);
     tim0_5_0 = c_im(in[5 * istride]);
     tre0_6_0 = c_re(in[6 * istride]);
     tim0_6_0 = c_im(in[6 * istride]);
     tre0_7_0 = c_re(in[7 * istride]);
     tim0_7_0 = c_im(in[7 * istride]);
     tre0_8_0 = c_re(in[8 * istride]);
     tim0_8_0 = c_im(in[8 * istride]);
     tre0_9_0 = c_re(in[9 * istride]);
     tim0_9_0 = c_im(in[9 * istride]);
     tre0_10_0 = c_re(in[10 * istride]);
     tim0_10_0 = c_im(in[10 * istride]);
     c_re(out[0]) = tre0_0_0 + tre0_1_0 + tre0_2_0 + tre0_3_0 + tre0_4_0 + tre0_5_0 + tre0_6_0 + tre0_7_0 + tre0_8_0 + tre0_9_0 + tre0_10_0;
     c_im(out[0]) = tim0_0_0 + tim0_1_0 + tim0_2_0 + tim0_3_0 + tim0_4_0 + tim0_5_0 + tim0_6_0 + tim0_7_0 + tim0_8_0 + tim0_9_0 + tim0_10_0;
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tre1_1_0;
	  tre1_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K841253532) * (tre0_1_0 + tre0_10_0)) + (((FFTW_REAL) FFTW_K415415013) * (tre0_2_0 + tre0_9_0)) - (((FFTW_REAL) FFTW_K959492973) * (tre0_5_0 + tre0_6_0)) - (((FFTW_REAL) FFTW_K654860733) * (tre0_4_0 + tre0_7_0)) - (((FFTW_REAL) FFTW_K142314838) * (tre0_3_0 + tre0_8_0));
	  tre1_1_0 = (((FFTW_REAL) FFTW_K540640817) * (tim0_10_0 - tim0_1_0)) + (((FFTW_REAL) FFTW_K909631995) * (tim0_9_0 - tim0_2_0)) + (((FFTW_REAL) FFTW_K989821441) * (tim0_8_0 - tim0_3_0)) + (((FFTW_REAL) FFTW_K755749574) * (tim0_7_0 - tim0_4_0)) + (((FFTW_REAL) FFTW_K281732556) * (tim0_6_0 - tim0_5_0));
	  c_re(out[ostride]) = tre1_0_0 + tre1_1_0;
	  c_re(out[10 * ostride]) = tre1_0_0 - tre1_1_0;
     }
     {
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tim1_1_0;
	  tim1_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K841253532) * (tim0_1_0 + tim0_10_0)) + (((FFTW_REAL) FFTW_K415415013) * (tim0_2_0 + tim0_9_0)) - (((FFTW_REAL) FFTW_K959492973) * (tim0_5_0 + tim0_6_0)) - (((FFTW_REAL) FFTW_K654860733) * (tim0_4_0 + tim0_7_0)) - (((FFTW_REAL) FFTW_K142314838) * (tim0_3_0 + tim0_8_0));
	  tim1_1_0 = (((FFTW_REAL) FFTW_K540640817) * (tre0_1_0 - tre0_10_0)) + (((FFTW_REAL) FFTW_K909631995) * (tre0_2_0 - tre0_9_0)) + (((FFTW_REAL) FFTW_K989821441) * (tre0_3_0 - tre0_8_0)) + (((FFTW_REAL) FFTW_K755749574) * (tre0_4_0 - tre0_7_0)) + (((FFTW_REAL) FFTW_K281732556) * (tre0_5_0 - tre0_6_0));
	  c_im(out[ostride]) = tim1_0_0 + tim1_1_0;
	  c_im(out[10 * ostride]) = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tre1_1_0;
	  tre1_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K415415013) * (tre0_1_0 + tre0_10_0)) + (((FFTW_REAL) FFTW_K841253532) * (tre0_5_0 + tre0_6_0)) - (((FFTW_REAL) FFTW_K142314838) * (tre0_4_0 + tre0_7_0)) - (((FFTW_REAL) FFTW_K959492973) * (tre0_3_0 + tre0_8_0)) - (((FFTW_REAL) FFTW_K654860733) * (tre0_2_0 + tre0_9_0));
	  tre1_1_0 = (((FFTW_REAL) FFTW_K909631995) * (tim0_10_0 - tim0_1_0)) + (((FFTW_REAL) FFTW_K755749574) * (tim0_9_0 - tim0_2_0)) + (((FFTW_REAL) FFTW_K281732556) * (tim0_3_0 - tim0_8_0)) + (((FFTW_REAL) FFTW_K989821441) * (tim0_4_0 - tim0_7_0)) + (((FFTW_REAL) FFTW_K540640817) * (tim0_5_0 - tim0_6_0));
	  c_re(out[2 * ostride]) = tre1_0_0 + tre1_1_0;
	  c_re(out[9 * ostride]) = tre1_0_0 - tre1_1_0;
     }
     {
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tim1_1_0;
	  tim1_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K415415013) * (tim0_1_0 + tim0_10_0)) + (((FFTW_REAL) FFTW_K841253532) * (tim0_5_0 + tim0_6_0)) - (((FFTW_REAL) FFTW_K142314838) * (tim0_4_0 + tim0_7_0)) - (((FFTW_REAL) FFTW_K959492973) * (tim0_3_0 + tim0_8_0)) - (((FFTW_REAL) FFTW_K654860733) * (tim0_2_0 + tim0_9_0));
	  tim1_1_0 = (((FFTW_REAL) FFTW_K909631995) * (tre0_1_0 - tre0_10_0)) + (((FFTW_REAL) FFTW_K755749574) * (tre0_2_0 - tre0_9_0)) + (((FFTW_REAL) FFTW_K281732556) * (tre0_8_0 - tre0_3_0)) + (((FFTW_REAL) FFTW_K989821441) * (tre0_7_0 - tre0_4_0)) + (((FFTW_REAL) FFTW_K540640817) * (tre0_6_0 - tre0_5_0));
	  c_im(out[2 * ostride]) = tim1_0_0 + tim1_1_0;
	  c_im(out[9 * ostride]) = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tre1_1_0;
	  tre1_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K415415013) * (tre0_3_0 + tre0_8_0)) + (((FFTW_REAL) FFTW_K841253532) * (tre0_4_0 + tre0_7_0)) - (((FFTW_REAL) FFTW_K654860733) * (tre0_5_0 + tre0_6_0)) - (((FFTW_REAL) FFTW_K959492973) * (tre0_2_0 + tre0_9_0)) - (((FFTW_REAL) FFTW_K142314838) * (tre0_1_0 + tre0_10_0));
	  tre1_1_0 = (((FFTW_REAL) FFTW_K989821441) * (tim0_10_0 - tim0_1_0)) + (((FFTW_REAL) FFTW_K281732556) * (tim0_2_0 - tim0_9_0)) + (((FFTW_REAL) FFTW_K909631995) * (tim0_3_0 - tim0_8_0)) + (((FFTW_REAL) FFTW_K540640817) * (tim0_7_0 - tim0_4_0)) + (((FFTW_REAL) FFTW_K755749574) * (tim0_6_0 - tim0_5_0));
	  c_re(out[3 * ostride]) = tre1_0_0 + tre1_1_0;
	  c_re(out[8 * ostride]) = tre1_0_0 - tre1_1_0;
     }
     {
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tim1_1_0;
	  tim1_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K415415013) * (tim0_3_0 + tim0_8_0)) + (((FFTW_REAL) FFTW_K841253532) * (tim0_4_0 + tim0_7_0)) - (((FFTW_REAL) FFTW_K654860733) * (tim0_5_0 + tim0_6_0)) - (((FFTW_REAL) FFTW_K959492973) * (tim0_2_0 + tim0_9_0)) - (((FFTW_REAL) FFTW_K142314838) * (tim0_1_0 + tim0_10_0));
	  tim1_1_0 = (((FFTW_REAL) FFTW_K989821441) * (tre0_1_0 - tre0_10_0)) + (((FFTW_REAL) FFTW_K281732556) * (tre0_9_0 - tre0_2_0)) + (((FFTW_REAL) FFTW_K909631995) * (tre0_8_0 - tre0_3_0)) + (((FFTW_REAL) FFTW_K540640817) * (tre0_4_0 - tre0_7_0)) + (((FFTW_REAL) FFTW_K755749574) * (tre0_5_0 - tre0_6_0));
	  c_im(out[3 * ostride]) = tim1_0_0 + tim1_1_0;
	  c_im(out[8 * ostride]) = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tre1_1_0;
	  tre1_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K841253532) * (tre0_3_0 + tre0_8_0)) + (((FFTW_REAL) FFTW_K415415013) * (tre0_5_0 + tre0_6_0)) - (((FFTW_REAL) FFTW_K959492973) * (tre0_4_0 + tre0_7_0)) - (((FFTW_REAL) FFTW_K142314838) * (tre0_2_0 + tre0_9_0)) - (((FFTW_REAL) FFTW_K654860733) * (tre0_1_0 + tre0_10_0));
	  tre1_1_0 = (((FFTW_REAL) FFTW_K755749574) * (tim0_10_0 - tim0_1_0)) + (((FFTW_REAL) FFTW_K989821441) * (tim0_2_0 - tim0_9_0)) + (((FFTW_REAL) FFTW_K540640817) * (tim0_8_0 - tim0_3_0)) + (((FFTW_REAL) FFTW_K281732556) * (tim0_7_0 - tim0_4_0)) + (((FFTW_REAL) FFTW_K909631995) * (tim0_5_0 - tim0_6_0));
	  c_re(out[4 * ostride]) = tre1_0_0 + tre1_1_0;
	  c_re(out[7 * ostride]) = tre1_0_0 - tre1_1_0;
     }
     {
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tim1_1_0;
	  tim1_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K841253532) * (tim0_3_0 + tim0_8_0)) + (((FFTW_REAL) FFTW_K415415013) * (tim0_5_0 + tim0_6_0)) - (((FFTW_REAL) FFTW_K959492973) * (tim0_4_0 + tim0_7_0)) - (((FFTW_REAL) FFTW_K142314838) * (tim0_2_0 + tim0_9_0)) - (((FFTW_REAL) FFTW_K654860733) * (tim0_1_0 + tim0_10_0));
	  tim1_1_0 = (((FFTW_REAL) FFTW_K755749574) * (tre0_1_0 - tre0_10_0)) + (((FFTW_REAL) FFTW_K989821441) * (tre0_9_0 - tre0_2_0)) + (((FFTW_REAL) FFTW_K540640817) * (tre0_3_0 - tre0_8_0)) + (((FFTW_REAL) FFTW_K281732556) * (tre0_4_0 - tre0_7_0)) + (((FFTW_REAL) FFTW_K909631995) * (tre0_6_0 - tre0_5_0));
	  c_im(out[4 * ostride]) = tim1_0_0 + tim1_1_0;
	  c_im(out[7 * ostride]) = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tre1_1_0;
	  tre1_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K841253532) * (tre0_2_0 + tre0_9_0)) + (((FFTW_REAL) FFTW_K415415013) * (tre0_4_0 + tre0_7_0)) - (((FFTW_REAL) FFTW_K142314838) * (tre0_5_0 + tre0_6_0)) - (((FFTW_REAL) FFTW_K654860733) * (tre0_3_0 + tre0_8_0)) - (((FFTW_REAL) FFTW_K959492973) * (tre0_1_0 + tre0_10_0));
	  tre1_1_0 = (((FFTW_REAL) FFTW_K281732556) * (tim0_10_0 - tim0_1_0)) + (((FFTW_REAL) FFTW_K540640817) * (tim0_2_0 - tim0_9_0)) + (((FFTW_REAL) FFTW_K755749574) * (tim0_8_0 - tim0_3_0)) + (((FFTW_REAL) FFTW_K909631995) * (tim0_4_0 - tim0_7_0)) + (((FFTW_REAL) FFTW_K989821441) * (tim0_6_0 - tim0_5_0));
	  c_re(out[5 * ostride]) = tre1_0_0 + tre1_1_0;
	  c_re(out[6 * ostride]) = tre1_0_0 - tre1_1_0;
     }
     {
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tim1_1_0;
	  tim1_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K841253532) * (tim0_2_0 + tim0_9_0)) + (((FFTW_REAL) FFTW_K415415013) * (tim0_4_0 + tim0_7_0)) - (((FFTW_REAL) FFTW_K142314838) * (tim0_5_0 + tim0_6_0)) - (((FFTW_REAL) FFTW_K654860733) * (tim0_3_0 + tim0_8_0)) - (((FFTW_REAL) FFTW_K959492973) * (tim0_1_0 + tim0_10_0));
	  tim1_1_0 = (((FFTW_REAL) FFTW_K281732556) * (tre0_1_0 - tre0_10_0)) + (((FFTW_REAL) FFTW_K540640817) * (tre0_9_0 - tre0_2_0)) + (((FFTW_REAL) FFTW_K755749574) * (tre0_3_0 - tre0_8_0)) + (((FFTW_REAL) FFTW_K909631995) * (tre0_7_0 - tre0_4_0)) + (((FFTW_REAL) FFTW_K989821441) * (tre0_5_0 - tre0_6_0));
	  c_im(out[5 * ostride]) = tim1_0_0 + tim1_1_0;
	  c_im(out[6 * ostride]) = tim1_0_0 - tim1_1_0;
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 104 FP additions and 16 FP multiplications */

void fftwi_no_twiddle_12(const FFTW_COMPLEX *in, FFTW_COMPLEX *out, int istride, int ostride)
{
     FFTW_REAL tre0_0_0;
     FFTW_REAL tim0_0_0;
     FFTW_REAL tre0_0_1;
     FFTW_REAL tim0_0_1;
     FFTW_REAL tre0_0_2;
     FFTW_REAL tim0_0_2;
     FFTW_REAL tre0_0_3;
     FFTW_REAL tim0_0_3;
     FFTW_REAL tre0_1_0;
     FFTW_REAL tim0_1_0;
     FFTW_REAL tre0_1_1;
     FFTW_REAL tim0_1_1;
     FFTW_REAL tre0_1_2;
     FFTW_REAL tim0_1_2;
     FFTW_REAL tre0_1_3;
     FFTW_REAL tim0_1_3;
     FFTW_REAL tre0_2_0;
     FFTW_REAL tim0_2_0;
     FFTW_REAL tre0_2_1;
     FFTW_REAL tim0_2_1;
     FFTW_REAL tre0_2_2;
     FFTW_REAL tim0_2_2;
     FFTW_REAL tre0_2_3;
     FFTW_REAL tim0_2_3;
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_2_0;
	  FFTW_REAL tim1_2_0;
	  tre1_0_0 = c_re(in[0]);
	  tim1_0_0 = c_im(in[0]);
	  tre1_1_0 = c_re(in[4 * istride]);
	  tim1_1_0 = c_im(in[4 * istride]);
	  tre1_2_0 = c_re(in[8 * istride]);
	  tim1_2_0 = c_im(in[8 * istride]);
	  tre0_0_0 = tre1_0_0 + tre1_1_0 + tre1_2_0;
	  tim0_0_0 = tim1_0_0 + tim1_1_0 + tim1_2_0;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tre2_1_0;
	       tre2_0_0 = tre1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tre1_1_0 + tre1_2_0));
	       tre2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tim1_2_0 - tim1_1_0);
	       tre0_1_0 = tre2_0_0 + tre2_1_0;
	       tre0_2_0 = tre2_0_0 - tre2_1_0;
	  }
	  {
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tim2_1_0;
	       tim2_0_0 = tim1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tim1_1_0 + tim1_2_0));
	       tim2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tre1_1_0 - tre1_2_0);
	       tim0_1_0 = tim2_0_0 + tim2_1_0;
	       tim0_2_0 = tim2_0_0 - tim2_1_0;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_2_0;
	  FFTW_REAL tim1_2_0;
	  tre1_0_0 = c_re(in[3 * istride]);
	  tim1_0_0 = c_im(in[3 * istride]);
	  tre1_1_0 = c_re(in[7 * istride]);
	  tim1_1_0 = c_im(in[7 * istride]);
	  tre1_2_0 = c_re(in[11 * istride]);
	  tim1_2_0 = c_im(in[11 * istride]);
	  tre0_0_1 = tre1_0_0 + tre1_1_0 + tre1_2_0;
	  tim0_0_1 = tim1_0_0 + tim1_1_0 + tim1_2_0;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tre2_1_0;
	       tre2_0_0 = tre1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tre1_1_0 + tre1_2_0));
	       tre2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tim1_2_0 - tim1_1_0);
	       tre0_1_1 = tre2_0_0 + tre2_1_0;
	       tre0_2_1 = tre2_0_0 - tre2_1_0;
	  }
	  {
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tim2_1_0;
	       tim2_0_0 = tim1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tim1_1_0 + tim1_2_0));
	       tim2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tre1_1_0 - tre1_2_0);
	       tim0_1_1 = tim2_0_0 + tim2_1_0;
	       tim0_2_1 = tim2_0_0 - tim2_1_0;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_2_0;
	  FFTW_REAL tim1_2_0;
	  tre1_0_0 = c_re(in[6 * istride]);
	  tim1_0_0 = c_im(in[6 * istride]);
	  tre1_1_0 = c_re(in[10 * istride]);
	  tim1_1_0 = c_im(in[10 * istride]);
	  tre1_2_0 = c_re(in[2 * istride]);
	  tim1_2_0 = c_im(in[2 * istride]);
	  tre0_0_2 = tre1_0_0 + tre1_1_0 + tre1_2_0;
	  tim0_0_2 = tim1_0_0 + tim1_1_0 + tim1_2_0;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tre2_1_0;
	       tre2_0_0 = tre1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tre1_1_0 + tre1_2_0));
	       tre2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tim1_2_0 - tim1_1_0);
	       tre0_1_2 = tre2_0_0 + tre2_1_0;
	       tre0_2_2 = tre2_0_0 - tre2_1_0;
	  }
	  {
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tim2_1_0;
	       tim2_0_0 = tim1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tim1_1_0 + tim1_2_0));
	       tim2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tre1_1_0 - tre1_2_0);
	       tim0_1_2 = tim2_0_0 + tim2_1_0;
	       tim0_2_2 = tim2_0_0 - tim2_1_0;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_2_0;
	  FFTW_REAL tim1_2_0;
	  tre1_0_0 = c_re(in[9 * istride]);
	  tim1_0_0 = c_im(in[9 * istride]);
	  tre1_1_0 = c_re(in[istride]);
	  tim1_1_0 = c_im(in[istride]);
	  tre1_2_0 = c_re(in[5 * istride]);
	  tim1_2_0 = c_im(in[5 * istride]);
	  tre0_0_3 = tre1_0_0 + tre1_1_0 + tre1_2_0;
	  tim0_0_3 = tim1_0_0 + tim1_1_0 + tim1_2_0;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tre2_1_0;
	       tre2_0_0 = tre1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tre1_1_0 + tre1_2_0));
	       tre2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tim1_2_0 - tim1_1_0);
	       tre0_1_3 = tre2_0_0 + tre2_1_0;
	       tre0_2_3 = tre2_0_0 - tre2_1_0;
	  }
	  {
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tim2_1_0;
	       tim2_0_0 = tim1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tim1_1_0 + tim1_2_0));
	       tim2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tre1_1_0 - tre1_2_0);
	       tim0_1_3 = tim2_0_0 + tim2_1_0;
	       tim0_2_3 = tim2_0_0 - tim2_1_0;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  tre1_0_0 = tre0_0_0 + tre0_0_2;
	  tim1_0_0 = tim0_0_0 + tim0_0_2;
	  tre1_1_0 = tre0_0_0 - tre0_0_2;
	  tim1_1_0 = tim0_0_0 - tim0_0_2;
	  tre1_0_1 = tre0_0_1 + tre0_0_3;
	  tim1_0_1 = tim0_0_1 + tim0_0_3;
	  tre1_1_1 = tre0_0_1 - tre0_0_3;
	  tim1_1_1 = tim0_0_1 - tim0_0_3;
	  c_re(out[0]) = tre1_0_0 + tre1_0_1;
	  c_im(out[0]) = tim1_0_0 + tim1_0_1;
	  c_re(out[6 * ostride]) = tre1_0_0 - tre1_0_1;
	  c_im(out[6 * ostride]) = tim1_0_0 - tim1_0_1;
	  c_re(out[9 * ostride]) = tre1_1_0 - tim1_1_1;
	  c_im(out[9 * ostride]) = tim1_1_0 + tre1_1_1;
	  c_re(out[3 * ostride]) = tre1_1_0 + tim1_1_1;
	  c_im(out[3 * ostride]) = tim1_1_0 - tre1_1_1;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  tre1_0_0 = tre0_1_0 + tre0_1_2;
	  tim1_0_0 = tim0_1_0 + tim0_1_2;
	  tre1_1_0 = tre0_1_0 - tre0_1_2;
	  tim1_1_0 = tim0_1_0 - tim0_1_2;
	  tre1_0_1 = tre0_1_1 + tre0_1_3;
	  tim1_0_1 = tim0_1_1 + tim0_1_3;
	  tre1_1_1 = tre0_1_1 - tre0_1_3;
	  tim1_1_1 = tim0_1_1 - tim0_1_3;
	  c_re(out[4 * ostride]) = tre1_0_0 + tre1_0_1;
	  c_im(out[4 * ostride]) = tim1_0_0 + tim1_0_1;
	  c_re(out[10 * ostride]) = tre1_0_0 - tre1_0_1;
	  c_im(out[10 * ostride]) = tim1_0_0 - tim1_0_1;
	  c_re(out[ostride]) = tre1_1_0 - tim1_1_1;
	  c_im(out[ostride]) = tim1_1_0 + tre1_1_1;
	  c_re(out[7 * ostride]) = tre1_1_0 + tim1_1_1;
	  c_im(out[7 * ostride]) = tim1_1_0 - tre1_1_1;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  tre1_0_0 = tre0_2_0 + tre0_2_2;
	  tim1_0_0 = tim0_2_0 + tim0_2_2;
	  tre1_1_0 = tre0_2_0 - tre0_2_2;
	  tim1_1_0 = tim0_2_0 - tim0_2_2;
	  tre1_0_1 = tre0_2_1 + tre0_2_3;
	  tim1_0_1 = tim0_2_1 + tim0_2_3;
	  tre1_1_1 = tre0_2_1 - tre0_2_3;
	  tim1_1_1 = tim0_2_1 - tim0_2_3;
	  c_re(out[8 * ostride]) = tre1_0_0 + tre1_0_1;
	  c_im(out[8 * ostride]) = tim1_0_0 + tim1_0_1;
	  c_re(out[2 * ostride]) = tre1_0_0 - tre1_0_1;
	  c_im(out[2 * ostride]) = tim1_0_0 - tim1_0_1;
	  c_re(out[5 * ostride]) = tre1_1_0 - tim1_1_1;
	  c_im(out[5 * ostride]) = tim1_1_0 + tre1_1_1;
	  c_re(out[11 * ostride]) = tre1_1_0 + tim1_1_1;
	  c_im(out[11 * ostride]) = tim1_1_0 - tre1_1_1;
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 324 FP additions and 144 FP multiplications */

void fftwi_no_twiddle_13(const FFTW_COMPLEX *in, FFTW_COMPLEX *out, int istride, int ostride)
{
     FFTW_REAL tre0_0_0;
     FFTW_REAL tim0_0_0;
     FFTW_REAL tre0_1_0;
     FFTW_REAL tim0_1_0;
     FFTW_REAL tre0_2_0;
     FFTW_REAL tim0_2_0;
     FFTW_REAL tre0_3_0;
     FFTW_REAL tim0_3_0;
     FFTW_REAL tre0_4_0;
     FFTW_REAL tim0_4_0;
     FFTW_REAL tre0_5_0;
     FFTW_REAL tim0_5_0;
     FFTW_REAL tre0_6_0;
     FFTW_REAL tim0_6_0;
     FFTW_REAL tre0_7_0;
     FFTW_REAL tim0_7_0;
     FFTW_REAL tre0_8_0;
     FFTW_REAL tim0_8_0;
     FFTW_REAL tre0_9_0;
     FFTW_REAL tim0_9_0;
     FFTW_REAL tre0_10_0;
     FFTW_REAL tim0_10_0;
     FFTW_REAL tre0_11_0;
     FFTW_REAL tim0_11_0;
     FFTW_REAL tre0_12_0;
     FFTW_REAL tim0_12_0;
     tre0_0_0 = c_re(in[0]);
     tim0_0_0 = c_im(in[0]);
     tre0_1_0 = c_re(in[istride]);
     tim0_1_0 = c_im(in[istride]);
     tre0_2_0 = c_re(in[2 * istride]);
     tim0_2_0 = c_im(in[2 * istride]);
     tre0_3_0 = c_re(in[3 * istride]);
     tim0_3_0 = c_im(in[3 * istride]);
     tre0_4_0 = c_re(in[4 * istride]);
     tim0_4_0 = c_im(in[4 * istride]);
     tre0_5_0 = c_re(in[5 * istride]);
     tim0_5_0 = c_im(in[5 * istride]);
     tre0_6_0 = c_re(in[6 * istride]);
     tim0_6_0 = c_im(in[6 * istride]);
     tre0_7_0 = c_re(in[7 * istride]);
     tim0_7_0 = c_im(in[7 * istride]);
     tre0_8_0 = c_re(in[8 * istride]);
     tim0_8_0 = c_im(in[8 * istride]);
     tre0_9_0 = c_re(in[9 * istride]);
     tim0_9_0 = c_im(in[9 * istride]);
     tre0_10_0 = c_re(in[10 * istride]);
     tim0_10_0 = c_im(in[10 * istride]);
     tre0_11_0 = c_re(in[11 * istride]);
     tim0_11_0 = c_im(in[11 * istride]);
     tre0_12_0 = c_re(in[12 * istride]);
     tim0_12_0 = c_im(in[12 * istride]);
     c_re(out[0]) = tre0_0_0 + tre0_1_0 + tre0_2_0 + tre0_3_0 + tre0_4_0 + tre0_5_0 + tre0_6_0 + tre0_7_0 + tre0_8_0 + tre0_9_0 + tre0_10_0 + tre0_11_0 + tre0_12_0;
     c_im(out[0]) = tim0_0_0 + tim0_1_0 + tim0_2_0 + tim0_3_0 + tim0_4_0 + tim0_5_0 + tim0_6_0 + tim0_7_0 + tim0_8_0 + tim0_9_0 + tim0_10_0 + tim0_11_0 + tim0_12_0;
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tre1_1_0;
	  tre1_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K885456025) * (tre0_1_0 + tre0_12_0)) + (((FFTW_REAL) FFTW_K568064746) * (tre0_2_0 + tre0_11_0)) + (((FFTW_REAL) FFTW_K120536680) * (tre0_3_0 + tre0_10_0)) - (((FFTW_REAL) FFTW_K970941817) * (tre0_6_0 + tre0_7_0)) - (((FFTW_REAL) FFTW_K748510748) * (tre0_5_0 + tre0_8_0)) - (((FFTW_REAL) FFTW_K354604887) * (tre0_4_0 + tre0_9_0));
	  tre1_1_0 = (((FFTW_REAL) FFTW_K464723172) * (tim0_12_0 - tim0_1_0)) + (((FFTW_REAL) FFTW_K822983865) * (tim0_11_0 - tim0_2_0)) + (((FFTW_REAL) FFTW_K992708874) * (tim0_10_0 - tim0_3_0)) + (((FFTW_REAL) FFTW_K935016242) * (tim0_9_0 - tim0_4_0)) + (((FFTW_REAL) FFTW_K663122658) * (tim0_8_0 - tim0_5_0)) + (((FFTW_REAL) FFTW_K239315664) * (tim0_7_0 - tim0_6_0));
	  c_re(out[ostride]) = tre1_0_0 + tre1_1_0;
	  c_re(out[12 * ostride]) = tre1_0_0 - tre1_1_0;
     }
     {
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tim1_1_0;
	  tim1_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K885456025) * (tim0_1_0 + tim0_12_0)) + (((FFTW_REAL) FFTW_K568064746) * (tim0_2_0 + tim0_11_0)) + (((FFTW_REAL) FFTW_K120536680) * (tim0_3_0 + tim0_10_0)) - (((FFTW_REAL) FFTW_K970941817) * (tim0_6_0 + tim0_7_0)) - (((FFTW_REAL) FFTW_K748510748) * (tim0_5_0 + tim0_8_0)) - (((FFTW_REAL) FFTW_K354604887) * (tim0_4_0 + tim0_9_0));
	  tim1_1_0 = (((FFTW_REAL) FFTW_K464723172) * (tre0_1_0 - tre0_12_0)) + (((FFTW_REAL) FFTW_K822983865) * (tre0_2_0 - tre0_11_0)) + (((FFTW_REAL) FFTW_K992708874) * (tre0_3_0 - tre0_10_0)) + (((FFTW_REAL) FFTW_K935016242) * (tre0_4_0 - tre0_9_0)) + (((FFTW_REAL) FFTW_K663122658) * (tre0_5_0 - tre0_8_0)) + (((FFTW_REAL) FFTW_K239315664) * (tre0_6_0 - tre0_7_0));
	  c_im(out[ostride]) = tim1_0_0 + tim1_1_0;
	  c_im(out[12 * ostride]) = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tre1_1_0;
	  tre1_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K568064746) * (tre0_1_0 + tre0_12_0)) + (((FFTW_REAL) FFTW_K120536680) * (tre0_5_0 + tre0_8_0)) + (((FFTW_REAL) FFTW_K885456025) * (tre0_6_0 + tre0_7_0)) - (((FFTW_REAL) FFTW_K748510748) * (tre0_4_0 + tre0_9_0)) - (((FFTW_REAL) FFTW_K970941817) * (tre0_3_0 + tre0_10_0)) - (((FFTW_REAL) FFTW_K354604887) * (tre0_2_0 + tre0_11_0));
	  tre1_1_0 = (((FFTW_REAL) FFTW_K822983865) * (tim0_12_0 - tim0_1_0)) + (((FFTW_REAL) FFTW_K935016242) * (tim0_11_0 - tim0_2_0)) + (((FFTW_REAL) FFTW_K239315664) * (tim0_10_0 - tim0_3_0)) + (((FFTW_REAL) FFTW_K663122658) * (tim0_4_0 - tim0_9_0)) + (((FFTW_REAL) FFTW_K992708874) * (tim0_5_0 - tim0_8_0)) + (((FFTW_REAL) FFTW_K464723172) * (tim0_6_0 - tim0_7_0));
	  c_re(out[2 * ostride]) = tre1_0_0 + tre1_1_0;
	  c_re(out[11 * ostride]) = tre1_0_0 - tre1_1_0;
     }
     {
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tim1_1_0;
	  tim1_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K568064746) * (tim0_1_0 + tim0_12_0)) + (((FFTW_REAL) FFTW_K120536680) * (tim0_5_0 + tim0_8_0)) + (((FFTW_REAL) FFTW_K885456025) * (tim0_6_0 + tim0_7_0)) - (((FFTW_REAL) FFTW_K748510748) * (tim0_4_0 + tim0_9_0)) - (((FFTW_REAL) FFTW_K970941817) * (tim0_3_0 + tim0_10_0)) - (((FFTW_REAL) FFTW_K354604887) * (tim0_2_0 + tim0_11_0));
	  tim1_1_0 = (((FFTW_REAL) FFTW_K822983865) * (tre0_1_0 - tre0_12_0)) + (((FFTW_REAL) FFTW_K935016242) * (tre0_2_0 - tre0_11_0)) + (((FFTW_REAL) FFTW_K239315664) * (tre0_3_0 - tre0_10_0)) + (((FFTW_REAL) FFTW_K663122658) * (tre0_9_0 - tre0_4_0)) + (((FFTW_REAL) FFTW_K992708874) * (tre0_8_0 - tre0_5_0)) + (((FFTW_REAL) FFTW_K464723172) * (tre0_7_0 - tre0_6_0));
	  c_im(out[2 * ostride]) = tim1_0_0 + tim1_1_0;
	  c_im(out[11 * ostride]) = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tre1_1_0;
	  tre1_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K120536680) * (tre0_1_0 + tre0_12_0)) + (((FFTW_REAL) FFTW_K885456025) * (tre0_4_0 + tre0_9_0)) + (((FFTW_REAL) FFTW_K568064746) * (tre0_5_0 + tre0_8_0)) - (((FFTW_REAL) FFTW_K748510748) * (tre0_6_0 + tre0_7_0)) - (((FFTW_REAL) FFTW_K354604887) * (tre0_3_0 + tre0_10_0)) - (((FFTW_REAL) FFTW_K970941817) * (tre0_2_0 + tre0_11_0));
	  tre1_1_0 = (((FFTW_REAL) FFTW_K992708874) * (tim0_12_0 - tim0_1_0)) + (((FFTW_REAL) FFTW_K239315664) * (tim0_11_0 - tim0_2_0)) + (((FFTW_REAL) FFTW_K935016242) * (tim0_3_0 - tim0_10_0)) + (((FFTW_REAL) FFTW_K464723172) * (tim0_4_0 - tim0_9_0)) + (((FFTW_REAL) FFTW_K822983865) * (tim0_8_0 - tim0_5_0)) + (((FFTW_REAL) FFTW_K663122658) * (tim0_7_0 - tim0_6_0));
	  c_re(out[3 * ostride]) = tre1_0_0 + tre1_1_0;
	  c_re(out[10 * ostride]) = tre1_0_0 - tre1_1_0;
     }
     {
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tim1_1_0;
	  tim1_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K120536680) * (tim0_1_0 + tim0_12_0)) + (((FFTW_REAL) FFTW_K885456025) * (tim0_4_0 + tim0_9_0)) + (((FFTW_REAL) FFTW_K568064746) * (tim0_5_0 + tim0_8_0)) - (((FFTW_REAL) FFTW_K748510748) * (tim0_6_0 + tim0_7_0)) - (((FFTW_REAL) FFTW_K354604887) * (tim0_3_0 + tim0_10_0)) - (((FFTW_REAL) FFTW_K970941817) * (tim0_2_0 + tim0_11_0));
	  tim1_1_0 = (((FFTW_REAL) FFTW_K992708874) * (tre0_1_0 - tre0_12_0)) + (((FFTW_REAL) FFTW_K239315664) * (tre0_2_0 - tre0_11_0)) + (((FFTW_REAL) FFTW_K935016242) * (tre0_10_0 - tre0_3_0)) + (((FFTW_REAL) FFTW_K464723172) * (tre0_9_0 - tre0_4_0)) + (((FFTW_REAL) FFTW_K822983865) * (tre0_5_0 - tre0_8_0)) + (((FFTW_REAL) FFTW_K663122658) * (tre0_6_0 - tre0_7_0));
	  c_im(out[3 * ostride]) = tim1_0_0 + tim1_1_0;
	  c_im(out[10 * ostride]) = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tre1_1_0;
	  tre1_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K885456025) * (tre0_3_0 + tre0_10_0)) + (((FFTW_REAL) FFTW_K120536680) * (tre0_4_0 + tre0_9_0)) + (((FFTW_REAL) FFTW_K568064746) * (tre0_6_0 + tre0_7_0)) - (((FFTW_REAL) FFTW_K970941817) * (tre0_5_0 + tre0_8_0)) - (((FFTW_REAL) FFTW_K748510748) * (tre0_2_0 + tre0_11_0)) - (((FFTW_REAL) FFTW_K354604887) * (tre0_1_0 + tre0_12_0));
	  tre1_1_0 = (((FFTW_REAL) FFTW_K935016242) * (tim0_12_0 - tim0_1_0)) + (((FFTW_REAL) FFTW_K663122658) * (tim0_2_0 - tim0_11_0)) + (((FFTW_REAL) FFTW_K464723172) * (tim0_3_0 - tim0_10_0)) + (((FFTW_REAL) FFTW_K992708874) * (tim0_9_0 - tim0_4_0)) + (((FFTW_REAL) FFTW_K239315664) * (tim0_5_0 - tim0_8_0)) + (((FFTW_REAL) FFTW_K822983865) * (tim0_6_0 - tim0_7_0));
	  c_re(out[4 * ostride]) = tre1_0_0 + tre1_1_0;
	  c_re(out[9 * ostride]) = tre1_0_0 - tre1_1_0;
     }
     {
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tim1_1_0;
	  tim1_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K885456025) * (tim0_3_0 + tim0_10_0)) + (((FFTW_REAL) FFTW_K120536680) * (tim0_4_0 + tim0_9_0)) + (((FFTW_REAL) FFTW_K568064746) * (tim0_6_0 + tim0_7_0)) - (((FFTW_REAL) FFTW_K970941817) * (tim0_5_0 + tim0_8_0)) - (((FFTW_REAL) FFTW_K748510748) * (tim0_2_0 + tim0_11_0)) - (((FFTW_REAL) FFTW_K354604887) * (tim0_1_0 + tim0_12_0));
	  tim1_1_0 = (((FFTW_REAL) FFTW_K935016242) * (tre0_1_0 - tre0_12_0)) + (((FFTW_REAL) FFTW_K663122658) * (tre0_11_0 - tre0_2_0)) + (((FFTW_REAL) FFTW_K464723172) * (tre0_10_0 - tre0_3_0)) + (((FFTW_REAL) FFTW_K992708874) * (tre0_4_0 - tre0_9_0)) + (((FFTW_REAL) FFTW_K239315664) * (tre0_8_0 - tre0_5_0)) + (((FFTW_REAL) FFTW_K822983865) * (tre0_7_0 - tre0_6_0));
	  c_im(out[4 * ostride]) = tim1_0_0 + tim1_1_0;
	  c_im(out[9 * ostride]) = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tre1_1_0;
	  tre1_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K120536680) * (tre0_2_0 + tre0_11_0)) + (((FFTW_REAL) FFTW_K568064746) * (tre0_3_0 + tre0_10_0)) + (((FFTW_REAL) FFTW_K885456025) * (tre0_5_0 + tre0_8_0)) - (((FFTW_REAL) FFTW_K354604887) * (tre0_6_0 + tre0_7_0)) - (((FFTW_REAL) FFTW_K970941817) * (tre0_4_0 + tre0_9_0)) - (((FFTW_REAL) FFTW_K748510748) * (tre0_1_0 + tre0_12_0));
	  tre1_1_0 = (((FFTW_REAL) FFTW_K663122658) * (tim0_12_0 - tim0_1_0)) + (((FFTW_REAL) FFTW_K992708874) * (tim0_2_0 - tim0_11_0)) + (((FFTW_REAL) FFTW_K822983865) * (tim0_10_0 - tim0_3_0)) + (((FFTW_REAL) FFTW_K239315664) * (tim0_4_0 - tim0_9_0)) + (((FFTW_REAL) FFTW_K464723172) * (tim0_5_0 - tim0_8_0)) + (((FFTW_REAL) FFTW_K935016242) * (tim0_7_0 - tim0_6_0));
	  c_re(out[5 * ostride]) = tre1_0_0 + tre1_1_0;
	  c_re(out[8 * ostride]) = tre1_0_0 - tre1_1_0;
     }
     {
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tim1_1_0;
	  tim1_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K120536680) * (tim0_2_0 + tim0_11_0)) + (((FFTW_REAL) FFTW_K568064746) * (tim0_3_0 + tim0_10_0)) + (((FFTW_REAL) FFTW_K885456025) * (tim0_5_0 + tim0_8_0)) - (((FFTW_REAL) FFTW_K354604887) * (tim0_6_0 + tim0_7_0)) - (((FFTW_REAL) FFTW_K970941817) * (tim0_4_0 + tim0_9_0)) - (((FFTW_REAL) FFTW_K748510748) * (tim0_1_0 + tim0_12_0));
	  tim1_1_0 = (((FFTW_REAL) FFTW_K663122658) * (tre0_1_0 - tre0_12_0)) + (((FFTW_REAL) FFTW_K992708874) * (tre0_11_0 - tre0_2_0)) + (((FFTW_REAL) FFTW_K822983865) * (tre0_3_0 - tre0_10_0)) + (((FFTW_REAL) FFTW_K239315664) * (tre0_9_0 - tre0_4_0)) + (((FFTW_REAL) FFTW_K464723172) * (tre0_8_0 - tre0_5_0)) + (((FFTW_REAL) FFTW_K935016242) * (tre0_6_0 - tre0_7_0));
	  c_im(out[5 * ostride]) = tim1_0_0 + tim1_1_0;
	  c_im(out[8 * ostride]) = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tre1_1_0;
	  tre1_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K885456025) * (tre0_2_0 + tre0_11_0)) + (((FFTW_REAL) FFTW_K568064746) * (tre0_4_0 + tre0_9_0)) + (((FFTW_REAL) FFTW_K120536680) * (tre0_6_0 + tre0_7_0)) - (((FFTW_REAL) FFTW_K354604887) * (tre0_5_0 + tre0_8_0)) - (((FFTW_REAL) FFTW_K748510748) * (tre0_3_0 + tre0_10_0)) - (((FFTW_REAL) FFTW_K970941817) * (tre0_1_0 + tre0_12_0));
	  tre1_1_0 = (((FFTW_REAL) FFTW_K239315664) * (tim0_12_0 - tim0_1_0)) + (((FFTW_REAL) FFTW_K464723172) * (tim0_2_0 - tim0_11_0)) + (((FFTW_REAL) FFTW_K663122658) * (tim0_10_0 - tim0_3_0)) + (((FFTW_REAL) FFTW_K822983865) * (tim0_4_0 - tim0_9_0)) + (((FFTW_REAL) FFTW_K935016242) * (tim0_8_0 - tim0_5_0)) + (((FFTW_REAL) FFTW_K992708874) * (tim0_6_0 - tim0_7_0));
	  c_re(out[6 * ostride]) = tre1_0_0 + tre1_1_0;
	  c_re(out[7 * ostride]) = tre1_0_0 - tre1_1_0;
     }
     {
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tim1_1_0;
	  tim1_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K885456025) * (tim0_2_0 + tim0_11_0)) + (((FFTW_REAL) FFTW_K568064746) * (tim0_4_0 + tim0_9_0)) + (((FFTW_REAL) FFTW_K120536680) * (tim0_6_0 + tim0_7_0)) - (((FFTW_REAL) FFTW_K354604887) * (tim0_5_0 + tim0_8_0)) - (((FFTW_REAL) FFTW_K748510748) * (tim0_3_0 + tim0_10_0)) - (((FFTW_REAL) FFTW_K970941817) * (tim0_1_0 + tim0_12_0));
	  tim1_1_0 = (((FFTW_REAL) FFTW_K239315664) * (tre0_1_0 - tre0_12_0)) + (((FFTW_REAL) FFTW_K464723172) * (tre0_11_0 - tre0_2_0)) + (((FFTW_REAL) FFTW_K663122658) * (tre0_3_0 - tre0_10_0)) + (((FFTW_REAL) FFTW_K822983865) * (tre0_9_0 - tre0_4_0)) + (((FFTW_REAL) FFTW_K935016242) * (tre0_5_0 - tre0_8_0)) + (((FFTW_REAL) FFTW_K992708874) * (tre0_7_0 - tre0_6_0));
	  c_im(out[6 * ostride]) = tim1_0_0 + tim1_1_0;
	  c_im(out[7 * ostride]) = tim1_0_0 - tim1_1_0;
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 208 FP additions and 72 FP multiplications */

void fftwi_no_twiddle_14(const FFTW_COMPLEX *in, FFTW_COMPLEX *out, int istride, int ostride)
{
     FFTW_REAL tre0_0_0;
     FFTW_REAL tim0_0_0;
     FFTW_REAL tre0_0_1;
     FFTW_REAL tim0_0_1;
     FFTW_REAL tre0_0_2;
     FFTW_REAL tim0_0_2;
     FFTW_REAL tre0_0_3;
     FFTW_REAL tim0_0_3;
     FFTW_REAL tre0_0_4;
     FFTW_REAL tim0_0_4;
     FFTW_REAL tre0_0_5;
     FFTW_REAL tim0_0_5;
     FFTW_REAL tre0_0_6;
     FFTW_REAL tim0_0_6;
     FFTW_REAL tre0_1_0;
     FFTW_REAL tim0_1_0;
     FFTW_REAL tre0_1_1;
     FFTW_REAL tim0_1_1;
     FFTW_REAL tre0_1_2;
     FFTW_REAL tim0_1_2;
     FFTW_REAL tre0_1_3;
     FFTW_REAL tim0_1_3;
     FFTW_REAL tre0_1_4;
     FFTW_REAL tim0_1_4;
     FFTW_REAL tre0_1_5;
     FFTW_REAL tim0_1_5;
     FFTW_REAL tre0_1_6;
     FFTW_REAL tim0_1_6;
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  tre1_0_0 = c_re(in[0]);
	  tim1_0_0 = c_im(in[0]);
	  tre1_1_0 = c_re(in[7 * istride]);
	  tim1_1_0 = c_im(in[7 * istride]);
	  tre0_0_0 = tre1_0_0 + tre1_1_0;
	  tim0_0_0 = tim1_0_0 + tim1_1_0;
	  tre0_1_0 = tre1_0_0 - tre1_1_0;
	  tim0_1_0 = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  tre1_0_0 = c_re(in[2 * istride]);
	  tim1_0_0 = c_im(in[2 * istride]);
	  tre1_1_0 = c_re(in[9 * istride]);
	  tim1_1_0 = c_im(in[9 * istride]);
	  tre0_0_1 = tre1_0_0 + tre1_1_0;
	  tim0_0_1 = tim1_0_0 + tim1_1_0;
	  tre0_1_1 = tre1_0_0 - tre1_1_0;
	  tim0_1_1 = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  tre1_0_0 = c_re(in[4 * istride]);
	  tim1_0_0 = c_im(in[4 * istride]);
	  tre1_1_0 = c_re(in[11 * istride]);
	  tim1_1_0 = c_im(in[11 * istride]);
	  tre0_0_2 = tre1_0_0 + tre1_1_0;
	  tim0_0_2 = tim1_0_0 + tim1_1_0;
	  tre0_1_2 = tre1_0_0 - tre1_1_0;
	  tim0_1_2 = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  tre1_0_0 = c_re(in[6 * istride]);
	  tim1_0_0 = c_im(in[6 * istride]);
	  tre1_1_0 = c_re(in[13 * istride]);
	  tim1_1_0 = c_im(in[13 * istride]);
	  tre0_0_3 = tre1_0_0 + tre1_1_0;
	  tim0_0_3 = tim1_0_0 + tim1_1_0;
	  tre0_1_3 = tre1_0_0 - tre1_1_0;
	  tim0_1_3 = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  tre1_0_0 = c_re(in[8 * istride]);
	  tim1_0_0 = c_im(in[8 * istride]);
	  tre1_1_0 = c_re(in[istride]);
	  tim1_1_0 = c_im(in[istride]);
	  tre0_0_4 = tre1_0_0 + tre1_1_0;
	  tim0_0_4 = tim1_0_0 + tim1_1_0;
	  tre0_1_4 = tre1_0_0 - tre1_1_0;
	  tim0_1_4 = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  tre1_0_0 = c_re(in[10 * istride]);
	  tim1_0_0 = c_im(in[10 * istride]);
	  tre1_1_0 = c_re(in[3 * istride]);
	  tim1_1_0 = c_im(in[3 * istride]);
	  tre0_0_5 = tre1_0_0 + tre1_1_0;
	  tim0_0_5 = tim1_0_0 + tim1_1_0;
	  tre0_1_5 = tre1_0_0 - tre1_1_0;
	  tim0_1_5 = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  tre1_0_0 = c_re(in[12 * istride]);
	  tim1_0_0 = c_im(in[12 * istride]);
	  tre1_1_0 = c_re(in[5 * istride]);
	  tim1_1_0 = c_im(in[5 * istride]);
	  tre0_0_6 = tre1_0_0 + tre1_1_0;
	  tim0_0_6 = tim1_0_0 + tim1_1_0;
	  tre0_1_6 = tre1_0_0 - tre1_1_0;
	  tim0_1_6 = tim1_0_0 - tim1_1_0;
     }
     c_re(out[0]) = tre0_0_0 + tre0_0_1 + tre0_0_2 + tre0_0_3 + tre0_0_4 + tre0_0_5 + tre0_0_6;
     c_im(out[0]) = tim0_0_0 + tim0_0_1 + tim0_0_2 + tim0_0_3 + tim0_0_4 + tim0_0_5 + tim0_0_6;
     {
	  FFTW_REAL tre2_0_0;
	  FFTW_REAL tre2_1_0;
	  tre2_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K623489801) * (tre0_0_1 + tre0_0_6)) - (((FFTW_REAL) FFTW_K900968867) * (tre0_0_3 + tre0_0_4)) - (((FFTW_REAL) FFTW_K222520933) * (tre0_0_2 + tre0_0_5));
	  tre2_1_0 = (((FFTW_REAL) FFTW_K781831482) * (tim0_0_6 - tim0_0_1)) + (((FFTW_REAL) FFTW_K974927912) * (tim0_0_5 - tim0_0_2)) + (((FFTW_REAL) FFTW_K433883739) * (tim0_0_4 - tim0_0_3));
	  c_re(out[8 * ostride]) = tre2_0_0 + tre2_1_0;
	  c_re(out[6 * ostride]) = tre2_0_0 - tre2_1_0;
     }
     {
	  FFTW_REAL tim2_0_0;
	  FFTW_REAL tim2_1_0;
	  tim2_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K623489801) * (tim0_0_1 + tim0_0_6)) - (((FFTW_REAL) FFTW_K900968867) * (tim0_0_3 + tim0_0_4)) - (((FFTW_REAL) FFTW_K222520933) * (tim0_0_2 + tim0_0_5));
	  tim2_1_0 = (((FFTW_REAL) FFTW_K781831482) * (tre0_0_1 - tre0_0_6)) + (((FFTW_REAL) FFTW_K974927912) * (tre0_0_2 - tre0_0_5)) + (((FFTW_REAL) FFTW_K433883739) * (tre0_0_3 - tre0_0_4));
	  c_im(out[8 * ostride]) = tim2_0_0 + tim2_1_0;
	  c_im(out[6 * ostride]) = tim2_0_0 - tim2_1_0;
     }
     {
	  FFTW_REAL tre2_0_0;
	  FFTW_REAL tre2_1_0;
	  tre2_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K623489801) * (tre0_0_3 + tre0_0_4)) - (((FFTW_REAL) FFTW_K900968867) * (tre0_0_2 + tre0_0_5)) - (((FFTW_REAL) FFTW_K222520933) * (tre0_0_1 + tre0_0_6));
	  tre2_1_0 = (((FFTW_REAL) FFTW_K974927912) * (tim0_0_6 - tim0_0_1)) + (((FFTW_REAL) FFTW_K433883739) * (tim0_0_2 - tim0_0_5)) + (((FFTW_REAL) FFTW_K781831482) * (tim0_0_3 - tim0_0_4));
	  c_re(out[2 * ostride]) = tre2_0_0 + tre2_1_0;
	  c_re(out[12 * ostride]) = tre2_0_0 - tre2_1_0;
     }
     {
	  FFTW_REAL tim2_0_0;
	  FFTW_REAL tim2_1_0;
	  tim2_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K623489801) * (tim0_0_3 + tim0_0_4)) - (((FFTW_REAL) FFTW_K900968867) * (tim0_0_2 + tim0_0_5)) - (((FFTW_REAL) FFTW_K222520933) * (tim0_0_1 + tim0_0_6));
	  tim2_1_0 = (((FFTW_REAL) FFTW_K974927912) * (tre0_0_1 - tre0_0_6)) + (((FFTW_REAL) FFTW_K433883739) * (tre0_0_5 - tre0_0_2)) + (((FFTW_REAL) FFTW_K781831482) * (tre0_0_4 - tre0_0_3));
	  c_im(out[2 * ostride]) = tim2_0_0 + tim2_1_0;
	  c_im(out[12 * ostride]) = tim2_0_0 - tim2_1_0;
     }
     {
	  FFTW_REAL tre2_0_0;
	  FFTW_REAL tre2_1_0;
	  tre2_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K623489801) * (tre0_0_2 + tre0_0_5)) - (((FFTW_REAL) FFTW_K222520933) * (tre0_0_3 + tre0_0_4)) - (((FFTW_REAL) FFTW_K900968867) * (tre0_0_1 + tre0_0_6));
	  tre2_1_0 = (((FFTW_REAL) FFTW_K433883739) * (tim0_0_6 - tim0_0_1)) + (((FFTW_REAL) FFTW_K781831482) * (tim0_0_2 - tim0_0_5)) + (((FFTW_REAL) FFTW_K974927912) * (tim0_0_4 - tim0_0_3));
	  c_re(out[10 * ostride]) = tre2_0_0 + tre2_1_0;
	  c_re(out[4 * ostride]) = tre2_0_0 - tre2_1_0;
     }
     {
	  FFTW_REAL tim2_0_0;
	  FFTW_REAL tim2_1_0;
	  tim2_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K623489801) * (tim0_0_2 + tim0_0_5)) - (((FFTW_REAL) FFTW_K222520933) * (tim0_0_3 + tim0_0_4)) - (((FFTW_REAL) FFTW_K900968867) * (tim0_0_1 + tim0_0_6));
	  tim2_1_0 = (((FFTW_REAL) FFTW_K433883739) * (tre0_0_1 - tre0_0_6)) + (((FFTW_REAL) FFTW_K781831482) * (tre0_0_5 - tre0_0_2)) + (((FFTW_REAL) FFTW_K974927912) * (tre0_0_3 - tre0_0_4));
	  c_im(out[10 * ostride]) = tim2_0_0 + tim2_1_0;
	  c_im(out[4 * ostride]) = tim2_0_0 - tim2_1_0;
     }
     c_re(out[7 * ostride]) = tre0_1_0 + tre0_1_1 + tre0_1_2 + tre0_1_3 + tre0_1_4 + tre0_1_5 + tre0_1_6;
     c_im(out[7 * ostride]) = tim0_1_0 + tim0_1_1 + tim0_1_2 + tim0_1_3 + tim0_1_4 + tim0_1_5 + tim0_1_6;
     {
	  FFTW_REAL tre2_0_0;
	  FFTW_REAL tre2_1_0;
	  tre2_0_0 = tre0_1_0 + (((FFTW_REAL) FFTW_K623489801) * (tre0_1_1 + tre0_1_6)) - (((FFTW_REAL) FFTW_K900968867) * (tre0_1_3 + tre0_1_4)) - (((FFTW_REAL) FFTW_K222520933) * (tre0_1_2 + tre0_1_5));
	  tre2_1_0 = (((FFTW_REAL) FFTW_K781831482) * (tim0_1_6 - tim0_1_1)) + (((FFTW_REAL) FFTW_K974927912) * (tim0_1_5 - tim0_1_2)) + (((FFTW_REAL) FFTW_K433883739) * (tim0_1_4 - tim0_1_3));
	  c_re(out[ostride]) = tre2_0_0 + tre2_1_0;
	  c_re(out[13 * ostride]) = tre2_0_0 - tre2_1_0;
     }
     {
	  FFTW_REAL tim2_0_0;
	  FFTW_REAL tim2_1_0;
	  tim2_0_0 = tim0_1_0 + (((FFTW_REAL) FFTW_K623489801) * (tim0_1_1 + tim0_1_6)) - (((FFTW_REAL) FFTW_K900968867) * (tim0_1_3 + tim0_1_4)) - (((FFTW_REAL) FFTW_K222520933) * (tim0_1_2 + tim0_1_5));
	  tim2_1_0 = (((FFTW_REAL) FFTW_K781831482) * (tre0_1_1 - tre0_1_6)) + (((FFTW_REAL) FFTW_K974927912) * (tre0_1_2 - tre0_1_5)) + (((FFTW_REAL) FFTW_K433883739) * (tre0_1_3 - tre0_1_4));
	  c_im(out[ostride]) = tim2_0_0 + tim2_1_0;
	  c_im(out[13 * ostride]) = tim2_0_0 - tim2_1_0;
     }
     {
	  FFTW_REAL tre2_0_0;
	  FFTW_REAL tre2_1_0;
	  tre2_0_0 = tre0_1_0 + (((FFTW_REAL) FFTW_K623489801) * (tre0_1_3 + tre0_1_4)) - (((FFTW_REAL) FFTW_K900968867) * (tre0_1_2 + tre0_1_5)) - (((FFTW_REAL) FFTW_K222520933) * (tre0_1_1 + tre0_1_6));
	  tre2_1_0 = (((FFTW_REAL) FFTW_K974927912) * (tim0_1_6 - tim0_1_1)) + (((FFTW_REAL) FFTW_K433883739) * (tim0_1_2 - tim0_1_5)) + (((FFTW_REAL) FFTW_K781831482) * (tim0_1_3 - tim0_1_4));
	  c_re(out[9 * ostride]) = tre2_0_0 + tre2_1_0;
	  c_re(out[5 * ostride]) = tre2_0_0 - tre2_1_0;
     }
     {
	  FFTW_REAL tim2_0_0;
	  FFTW_REAL tim2_1_0;
	  tim2_0_0 = tim0_1_0 + (((FFTW_REAL) FFTW_K623489801) * (tim0_1_3 + tim0_1_4)) - (((FFTW_REAL) FFTW_K900968867) * (tim0_1_2 + tim0_1_5)) - (((FFTW_REAL) FFTW_K222520933) * (tim0_1_1 + tim0_1_6));
	  tim2_1_0 = (((FFTW_REAL) FFTW_K974927912) * (tre0_1_1 - tre0_1_6)) + (((FFTW_REAL) FFTW_K433883739) * (tre0_1_5 - tre0_1_2)) + (((FFTW_REAL) FFTW_K781831482) * (tre0_1_4 - tre0_1_3));
	  c_im(out[9 * ostride]) = tim2_0_0 + tim2_1_0;
	  c_im(out[5 * ostride]) = tim2_0_0 - tim2_1_0;
     }
     {
	  FFTW_REAL tre2_0_0;
	  FFTW_REAL tre2_1_0;
	  tre2_0_0 = tre0_1_0 + (((FFTW_REAL) FFTW_K623489801) * (tre0_1_2 + tre0_1_5)) - (((FFTW_REAL) FFTW_K222520933) * (tre0_1_3 + tre0_1_4)) - (((FFTW_REAL) FFTW_K900968867) * (tre0_1_1 + tre0_1_6));
	  tre2_1_0 = (((FFTW_REAL) FFTW_K433883739) * (tim0_1_6 - tim0_1_1)) + (((FFTW_REAL) FFTW_K781831482) * (tim0_1_2 - tim0_1_5)) + (((FFTW_REAL) FFTW_K974927912) * (tim0_1_4 - tim0_1_3));
	  c_re(out[3 * ostride]) = tre2_0_0 + tre2_1_0;
	  c_re(out[11 * ostride]) = tre2_0_0 - tre2_1_0;
     }
     {
	  FFTW_REAL tim2_0_0;
	  FFTW_REAL tim2_1_0;
	  tim2_0_0 = tim0_1_0 + (((FFTW_REAL) FFTW_K623489801) * (tim0_1_2 + tim0_1_5)) - (((FFTW_REAL) FFTW_K222520933) * (tim0_1_3 + tim0_1_4)) - (((FFTW_REAL) FFTW_K900968867) * (tim0_1_1 + tim0_1_6));
	  tim2_1_0 = (((FFTW_REAL) FFTW_K433883739) * (tre0_1_1 - tre0_1_6)) + (((FFTW_REAL) FFTW_K781831482) * (tre0_1_5 - tre0_1_2)) + (((FFTW_REAL) FFTW_K974927912) * (tre0_1_3 - tre0_1_4));
	  c_im(out[3 * ostride]) = tim2_0_0 + tim2_1_0;
	  c_im(out[11 * ostride]) = tim2_0_0 - tim2_1_0;
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 202 FP additions and 68 FP multiplications */

void fftwi_no_twiddle_15(const FFTW_COMPLEX *in, FFTW_COMPLEX *out, int istride, int ostride)
{
     FFTW_REAL tre0_0_0;
     FFTW_REAL tim0_0_0;
     FFTW_REAL tre0_0_1;
     FFTW_REAL tim0_0_1;
     FFTW_REAL tre0_0_2;
     FFTW_REAL tim0_0_2;
     FFTW_REAL tre0_0_3;
     FFTW_REAL tim0_0_3;
     FFTW_REAL tre0_0_4;
     FFTW_REAL tim0_0_4;
     FFTW_REAL tre0_1_0;
     FFTW_REAL tim0_1_0;
     FFTW_REAL tre0_1_1;
     FFTW_REAL tim0_1_1;
     FFTW_REAL tre0_1_2;
     FFTW_REAL tim0_1_2;
     FFTW_REAL tre0_1_3;
     FFTW_REAL tim0_1_3;
     FFTW_REAL tre0_1_4;
     FFTW_REAL tim0_1_4;
     FFTW_REAL tre0_2_0;
     FFTW_REAL tim0_2_0;
     FFTW_REAL tre0_2_1;
     FFTW_REAL tim0_2_1;
     FFTW_REAL tre0_2_2;
     FFTW_REAL tim0_2_2;
     FFTW_REAL tre0_2_3;
     FFTW_REAL tim0_2_3;
     FFTW_REAL tre0_2_4;
     FFTW_REAL tim0_2_4;
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_2_0;
	  FFTW_REAL tim1_2_0;
	  tre1_0_0 = c_re(in[0]);
	  tim1_0_0 = c_im(in[0]);
	  tre1_1_0 = c_re(in[5 * istride]);
	  tim1_1_0 = c_im(in[5 * istride]);
	  tre1_2_0 = c_re(in[10 * istride]);
	  tim1_2_0 = c_im(in[10 * istride]);
	  tre0_0_0 = tre1_0_0 + tre1_1_0 + tre1_2_0;
	  tim0_0_0 = tim1_0_0 + tim1_1_0 + tim1_2_0;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tre2_1_0;
	       tre2_0_0 = tre1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tre1_1_0 + tre1_2_0));
	       tre2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tim1_2_0 - tim1_1_0);
	       tre0_1_0 = tre2_0_0 + tre2_1_0;
	       tre0_2_0 = tre2_0_0 - tre2_1_0;
	  }
	  {
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tim2_1_0;
	       tim2_0_0 = tim1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tim1_1_0 + tim1_2_0));
	       tim2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tre1_1_0 - tre1_2_0);
	       tim0_1_0 = tim2_0_0 + tim2_1_0;
	       tim0_2_0 = tim2_0_0 - tim2_1_0;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_2_0;
	  FFTW_REAL tim1_2_0;
	  tre1_0_0 = c_re(in[3 * istride]);
	  tim1_0_0 = c_im(in[3 * istride]);
	  tre1_1_0 = c_re(in[8 * istride]);
	  tim1_1_0 = c_im(in[8 * istride]);
	  tre1_2_0 = c_re(in[13 * istride]);
	  tim1_2_0 = c_im(in[13 * istride]);
	  tre0_0_1 = tre1_0_0 + tre1_1_0 + tre1_2_0;
	  tim0_0_1 = tim1_0_0 + tim1_1_0 + tim1_2_0;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tre2_1_0;
	       tre2_0_0 = tre1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tre1_1_0 + tre1_2_0));
	       tre2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tim1_2_0 - tim1_1_0);
	       tre0_1_1 = tre2_0_0 + tre2_1_0;
	       tre0_2_1 = tre2_0_0 - tre2_1_0;
	  }
	  {
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tim2_1_0;
	       tim2_0_0 = tim1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tim1_1_0 + tim1_2_0));
	       tim2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tre1_1_0 - tre1_2_0);
	       tim0_1_1 = tim2_0_0 + tim2_1_0;
	       tim0_2_1 = tim2_0_0 - tim2_1_0;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_2_0;
	  FFTW_REAL tim1_2_0;
	  tre1_0_0 = c_re(in[6 * istride]);
	  tim1_0_0 = c_im(in[6 * istride]);
	  tre1_1_0 = c_re(in[11 * istride]);
	  tim1_1_0 = c_im(in[11 * istride]);
	  tre1_2_0 = c_re(in[istride]);
	  tim1_2_0 = c_im(in[istride]);
	  tre0_0_2 = tre1_0_0 + tre1_1_0 + tre1_2_0;
	  tim0_0_2 = tim1_0_0 + tim1_1_0 + tim1_2_0;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tre2_1_0;
	       tre2_0_0 = tre1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tre1_1_0 + tre1_2_0));
	       tre2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tim1_2_0 - tim1_1_0);
	       tre0_1_2 = tre2_0_0 + tre2_1_0;
	       tre0_2_2 = tre2_0_0 - tre2_1_0;
	  }
	  {
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tim2_1_0;
	       tim2_0_0 = tim1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tim1_1_0 + tim1_2_0));
	       tim2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tre1_1_0 - tre1_2_0);
	       tim0_1_2 = tim2_0_0 + tim2_1_0;
	       tim0_2_2 = tim2_0_0 - tim2_1_0;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_2_0;
	  FFTW_REAL tim1_2_0;
	  tre1_0_0 = c_re(in[9 * istride]);
	  tim1_0_0 = c_im(in[9 * istride]);
	  tre1_1_0 = c_re(in[14 * istride]);
	  tim1_1_0 = c_im(in[14 * istride]);
	  tre1_2_0 = c_re(in[4 * istride]);
	  tim1_2_0 = c_im(in[4 * istride]);
	  tre0_0_3 = tre1_0_0 + tre1_1_0 + tre1_2_0;
	  tim0_0_3 = tim1_0_0 + tim1_1_0 + tim1_2_0;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tre2_1_0;
	       tre2_0_0 = tre1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tre1_1_0 + tre1_2_0));
	       tre2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tim1_2_0 - tim1_1_0);
	       tre0_1_3 = tre2_0_0 + tre2_1_0;
	       tre0_2_3 = tre2_0_0 - tre2_1_0;
	  }
	  {
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tim2_1_0;
	       tim2_0_0 = tim1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tim1_1_0 + tim1_2_0));
	       tim2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tre1_1_0 - tre1_2_0);
	       tim0_1_3 = tim2_0_0 + tim2_1_0;
	       tim0_2_3 = tim2_0_0 - tim2_1_0;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_2_0;
	  FFTW_REAL tim1_2_0;
	  tre1_0_0 = c_re(in[12 * istride]);
	  tim1_0_0 = c_im(in[12 * istride]);
	  tre1_1_0 = c_re(in[2 * istride]);
	  tim1_1_0 = c_im(in[2 * istride]);
	  tre1_2_0 = c_re(in[7 * istride]);
	  tim1_2_0 = c_im(in[7 * istride]);
	  tre0_0_4 = tre1_0_0 + tre1_1_0 + tre1_2_0;
	  tim0_0_4 = tim1_0_0 + tim1_1_0 + tim1_2_0;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tre2_1_0;
	       tre2_0_0 = tre1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tre1_1_0 + tre1_2_0));
	       tre2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tim1_2_0 - tim1_1_0);
	       tre0_1_4 = tre2_0_0 + tre2_1_0;
	       tre0_2_4 = tre2_0_0 - tre2_1_0;
	  }
	  {
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tim2_1_0;
	       tim2_0_0 = tim1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tim1_1_0 + tim1_2_0));
	       tim2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tre1_1_0 - tre1_2_0);
	       tim0_1_4 = tim2_0_0 + tim2_1_0;
	       tim0_2_4 = tim2_0_0 - tim2_1_0;
	  }
     }
     c_re(out[0]) = tre0_0_0 + tre0_0_1 + tre0_0_2 + tre0_0_3 + tre0_0_4;
     c_im(out[0]) = tim0_0_0 + tim0_0_1 + tim0_0_2 + tim0_0_3 + tim0_0_4;
     {
	  FFTW_REAL tre2_0_0;
	  FFTW_REAL tre2_1_0;
	  tre2_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K309016994) * (tre0_0_1 + tre0_0_4)) - (((FFTW_REAL) FFTW_K809016994) * (tre0_0_2 + tre0_0_3));
	  tre2_1_0 = (((FFTW_REAL) FFTW_K951056516) * (tim0_0_4 - tim0_0_1)) + (((FFTW_REAL) FFTW_K587785252) * (tim0_0_3 - tim0_0_2));
	  c_re(out[6 * ostride]) = tre2_0_0 + tre2_1_0;
	  c_re(out[9 * ostride]) = tre2_0_0 - tre2_1_0;
     }
     {
	  FFTW_REAL tim2_0_0;
	  FFTW_REAL tim2_1_0;
	  tim2_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K309016994) * (tim0_0_1 + tim0_0_4)) - (((FFTW_REAL) FFTW_K809016994) * (tim0_0_2 + tim0_0_3));
	  tim2_1_0 = (((FFTW_REAL) FFTW_K951056516) * (tre0_0_1 - tre0_0_4)) + (((FFTW_REAL) FFTW_K587785252) * (tre0_0_2 - tre0_0_3));
	  c_im(out[6 * ostride]) = tim2_0_0 + tim2_1_0;
	  c_im(out[9 * ostride]) = tim2_0_0 - tim2_1_0;
     }
     {
	  FFTW_REAL tre2_0_0;
	  FFTW_REAL tre2_1_0;
	  tre2_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K309016994) * (tre0_0_2 + tre0_0_3)) - (((FFTW_REAL) FFTW_K809016994) * (tre0_0_1 + tre0_0_4));
	  tre2_1_0 = (((FFTW_REAL) FFTW_K587785252) * (tim0_0_4 - tim0_0_1)) + (((FFTW_REAL) FFTW_K951056516) * (tim0_0_2 - tim0_0_3));
	  c_re(out[12 * ostride]) = tre2_0_0 + tre2_1_0;
	  c_re(out[3 * ostride]) = tre2_0_0 - tre2_1_0;
     }
     {
	  FFTW_REAL tim2_0_0;
	  FFTW_REAL tim2_1_0;
	  tim2_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K309016994) * (tim0_0_2 + tim0_0_3)) - (((FFTW_REAL) FFTW_K809016994) * (tim0_0_1 + tim0_0_4));
	  tim2_1_0 = (((FFTW_REAL) FFTW_K587785252) * (tre0_0_1 - tre0_0_4)) + (((FFTW_REAL) FFTW_K951056516) * (tre0_0_3 - tre0_0_2));
	  c_im(out[12 * ostride]) = tim2_0_0 + tim2_1_0;
	  c_im(out[3 * ostride]) = tim2_0_0 - tim2_1_0;
     }
     c_re(out[10 * ostride]) = tre0_1_0 + tre0_1_1 + tre0_1_2 + tre0_1_3 + tre0_1_4;
     c_im(out[10 * ostride]) = tim0_1_0 + tim0_1_1 + tim0_1_2 + tim0_1_3 + tim0_1_4;
     {
	  FFTW_REAL tre2_0_0;
	  FFTW_REAL tre2_1_0;
	  tre2_0_0 = tre0_1_0 + (((FFTW_REAL) FFTW_K309016994) * (tre0_1_1 + tre0_1_4)) - (((FFTW_REAL) FFTW_K809016994) * (tre0_1_2 + tre0_1_3));
	  tre2_1_0 = (((FFTW_REAL) FFTW_K951056516) * (tim0_1_4 - tim0_1_1)) + (((FFTW_REAL) FFTW_K587785252) * (tim0_1_3 - tim0_1_2));
	  c_re(out[ostride]) = tre2_0_0 + tre2_1_0;
	  c_re(out[4 * ostride]) = tre2_0_0 - tre2_1_0;
     }
     {
	  FFTW_REAL tim2_0_0;
	  FFTW_REAL tim2_1_0;
	  tim2_0_0 = tim0_1_0 + (((FFTW_REAL) FFTW_K309016994) * (tim0_1_1 + tim0_1_4)) - (((FFTW_REAL) FFTW_K809016994) * (tim0_1_2 + tim0_1_3));
	  tim2_1_0 = (((FFTW_REAL) FFTW_K951056516) * (tre0_1_1 - tre0_1_4)) + (((FFTW_REAL) FFTW_K587785252) * (tre0_1_2 - tre0_1_3));
	  c_im(out[ostride]) = tim2_0_0 + tim2_1_0;
	  c_im(out[4 * ostride]) = tim2_0_0 - tim2_1_0;
     }
     {
	  FFTW_REAL tre2_0_0;
	  FFTW_REAL tre2_1_0;
	  tre2_0_0 = tre0_1_0 + (((FFTW_REAL) FFTW_K309016994) * (tre0_1_2 + tre0_1_3)) - (((FFTW_REAL) FFTW_K809016994) * (tre0_1_1 + tre0_1_4));
	  tre2_1_0 = (((FFTW_REAL) FFTW_K587785252) * (tim0_1_4 - tim0_1_1)) + (((FFTW_REAL) FFTW_K951056516) * (tim0_1_2 - tim0_1_3));
	  c_re(out[7 * ostride]) = tre2_0_0 + tre2_1_0;
	  c_re(out[13 * ostride]) = tre2_0_0 - tre2_1_0;
     }
     {
	  FFTW_REAL tim2_0_0;
	  FFTW_REAL tim2_1_0;
	  tim2_0_0 = tim0_1_0 + (((FFTW_REAL) FFTW_K309016994) * (tim0_1_2 + tim0_1_3)) - (((FFTW_REAL) FFTW_K809016994) * (tim0_1_1 + tim0_1_4));
	  tim2_1_0 = (((FFTW_REAL) FFTW_K587785252) * (tre0_1_1 - tre0_1_4)) + (((FFTW_REAL) FFTW_K951056516) * (tre0_1_3 - tre0_1_2));
	  c_im(out[7 * ostride]) = tim2_0_0 + tim2_1_0;
	  c_im(out[13 * ostride]) = tim2_0_0 - tim2_1_0;
     }
     c_re(out[5 * ostride]) = tre0_2_0 + tre0_2_1 + tre0_2_2 + tre0_2_3 + tre0_2_4;
     c_im(out[5 * ostride]) = tim0_2_0 + tim0_2_1 + tim0_2_2 + tim0_2_3 + tim0_2_4;
     {
	  FFTW_REAL tre2_0_0;
	  FFTW_REAL tre2_1_0;
	  tre2_0_0 = tre0_2_0 + (((FFTW_REAL) FFTW_K309016994) * (tre0_2_1 + tre0_2_4)) - (((FFTW_REAL) FFTW_K809016994) * (tre0_2_2 + tre0_2_3));
	  tre2_1_0 = (((FFTW_REAL) FFTW_K951056516) * (tim0_2_4 - tim0_2_1)) + (((FFTW_REAL) FFTW_K587785252) * (tim0_2_3 - tim0_2_2));
	  c_re(out[11 * ostride]) = tre2_0_0 + tre2_1_0;
	  c_re(out[14 * ostride]) = tre2_0_0 - tre2_1_0;
     }
     {
	  FFTW_REAL tim2_0_0;
	  FFTW_REAL tim2_1_0;
	  tim2_0_0 = tim0_2_0 + (((FFTW_REAL) FFTW_K309016994) * (tim0_2_1 + tim0_2_4)) - (((FFTW_REAL) FFTW_K809016994) * (tim0_2_2 + tim0_2_3));
	  tim2_1_0 = (((FFTW_REAL) FFTW_K951056516) * (tre0_2_1 - tre0_2_4)) + (((FFTW_REAL) FFTW_K587785252) * (tre0_2_2 - tre0_2_3));
	  c_im(out[11 * ostride]) = tim2_0_0 + tim2_1_0;
	  c_im(out[14 * ostride]) = tim2_0_0 - tim2_1_0;
     }
     {
	  FFTW_REAL tre2_0_0;
	  FFTW_REAL tre2_1_0;
	  tre2_0_0 = tre0_2_0 + (((FFTW_REAL) FFTW_K309016994) * (tre0_2_2 + tre0_2_3)) - (((FFTW_REAL) FFTW_K809016994) * (tre0_2_1 + tre0_2_4));
	  tre2_1_0 = (((FFTW_REAL) FFTW_K587785252) * (tim0_2_4 - tim0_2_1)) + (((FFTW_REAL) FFTW_K951056516) * (tim0_2_2 - tim0_2_3));
	  c_re(out[2 * ostride]) = tre2_0_0 + tre2_1_0;
	  c_re(out[8 * ostride]) = tre2_0_0 - tre2_1_0;
     }
     {
	  FFTW_REAL tim2_0_0;
	  FFTW_REAL tim2_1_0;
	  tim2_0_0 = tim0_2_0 + (((FFTW_REAL) FFTW_K309016994) * (tim0_2_2 + tim0_2_3)) - (((FFTW_REAL) FFTW_K809016994) * (tim0_2_1 + tim0_2_4));
	  tim2_1_0 = (((FFTW_REAL) FFTW_K587785252) * (tre0_2_1 - tre0_2_4)) + (((FFTW_REAL) FFTW_K951056516) * (tre0_2_3 - tre0_2_2));
	  c_im(out[2 * ostride]) = tim2_0_0 + tim2_1_0;
	  c_im(out[8 * ostride]) = tim2_0_0 - tim2_1_0;
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 144 FP additions and 24 FP multiplications */

void fftwi_no_twiddle_16(const FFTW_COMPLEX *in, FFTW_COMPLEX *out, int istride, int ostride)
{
     FFTW_REAL tre0_0_0;
     FFTW_REAL tim0_0_0;
     FFTW_REAL tre0_0_1;
     FFTW_REAL tim0_0_1;
     FFTW_REAL tre0_0_2;
     FFTW_REAL tim0_0_2;
     FFTW_REAL tre0_0_3;
     FFTW_REAL tim0_0_3;
     FFTW_REAL tre0_1_0;
     FFTW_REAL tim0_1_0;
     FFTW_REAL tre0_1_1;
     FFTW_REAL tim0_1_1;
     FFTW_REAL tre0_1_2;
     FFTW_REAL tim0_1_2;
     FFTW_REAL tre0_1_3;
     FFTW_REAL tim0_1_3;
     FFTW_REAL tre0_2_0;
     FFTW_REAL tim0_2_0;
     FFTW_REAL tre0_2_1;
     FFTW_REAL tim0_2_1;
     FFTW_REAL tre0_2_2;
     FFTW_REAL tim0_2_2;
     FFTW_REAL tre0_2_3;
     FFTW_REAL tim0_2_3;
     FFTW_REAL tre0_3_0;
     FFTW_REAL tim0_3_0;
     FFTW_REAL tre0_3_1;
     FFTW_REAL tim0_3_1;
     FFTW_REAL tre0_3_2;
     FFTW_REAL tim0_3_2;
     FFTW_REAL tre0_3_3;
     FFTW_REAL tim0_3_3;
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[0]);
	       tim2_0_0 = c_im(in[0]);
	       tre2_1_0 = c_re(in[8 * istride]);
	       tim2_1_0 = c_im(in[8 * istride]);
	       tre1_0_0 = tre2_0_0 + tre2_1_0;
	       tim1_0_0 = tim2_0_0 + tim2_1_0;
	       tre1_1_0 = tre2_0_0 - tre2_1_0;
	       tim1_1_0 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[4 * istride]);
	       tim2_0_0 = c_im(in[4 * istride]);
	       tre2_1_0 = c_re(in[12 * istride]);
	       tim2_1_0 = c_im(in[12 * istride]);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  tre0_0_0 = tre1_0_0 + tre1_0_1;
	  tim0_0_0 = tim1_0_0 + tim1_0_1;
	  tre0_2_0 = tre1_0_0 - tre1_0_1;
	  tim0_2_0 = tim1_0_0 - tim1_0_1;
	  tre0_1_0 = tre1_1_0 - tim1_1_1;
	  tim0_1_0 = tim1_1_0 + tre1_1_1;
	  tre0_3_0 = tre1_1_0 + tim1_1_1;
	  tim0_3_0 = tim1_1_0 - tre1_1_1;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[istride]);
	       tim2_0_0 = c_im(in[istride]);
	       tre2_1_0 = c_re(in[9 * istride]);
	       tim2_1_0 = c_im(in[9 * istride]);
	       tre1_0_0 = tre2_0_0 + tre2_1_0;
	       tim1_0_0 = tim2_0_0 + tim2_1_0;
	       tre1_1_0 = tre2_0_0 - tre2_1_0;
	       tim1_1_0 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[5 * istride]);
	       tim2_0_0 = c_im(in[5 * istride]);
	       tre2_1_0 = c_re(in[13 * istride]);
	       tim2_1_0 = c_im(in[13 * istride]);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  tre0_0_1 = tre1_0_0 + tre1_0_1;
	  tim0_0_1 = tim1_0_0 + tim1_0_1;
	  tre0_2_1 = tre1_0_0 - tre1_0_1;
	  tim0_2_1 = tim1_0_0 - tim1_0_1;
	  tre0_1_1 = tre1_1_0 - tim1_1_1;
	  tim0_1_1 = tim1_1_0 + tre1_1_1;
	  tre0_3_1 = tre1_1_0 + tim1_1_1;
	  tim0_3_1 = tim1_1_0 - tre1_1_1;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[2 * istride]);
	       tim2_0_0 = c_im(in[2 * istride]);
	       tre2_1_0 = c_re(in[10 * istride]);
	       tim2_1_0 = c_im(in[10 * istride]);
	       tre1_0_0 = tre2_0_0 + tre2_1_0;
	       tim1_0_0 = tim2_0_0 + tim2_1_0;
	       tre1_1_0 = tre2_0_0 - tre2_1_0;
	       tim1_1_0 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[6 * istride]);
	       tim2_0_0 = c_im(in[6 * istride]);
	       tre2_1_0 = c_re(in[14 * istride]);
	       tim2_1_0 = c_im(in[14 * istride]);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  tre0_0_2 = tre1_0_0 + tre1_0_1;
	  tim0_0_2 = tim1_0_0 + tim1_0_1;
	  tre0_2_2 = tre1_0_0 - tre1_0_1;
	  tim0_2_2 = tim1_0_0 - tim1_0_1;
	  tre0_1_2 = tre1_1_0 - tim1_1_1;
	  tim0_1_2 = tim1_1_0 + tre1_1_1;
	  tre0_3_2 = tre1_1_0 + tim1_1_1;
	  tim0_3_2 = tim1_1_0 - tre1_1_1;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[3 * istride]);
	       tim2_0_0 = c_im(in[3 * istride]);
	       tre2_1_0 = c_re(in[11 * istride]);
	       tim2_1_0 = c_im(in[11 * istride]);
	       tre1_0_0 = tre2_0_0 + tre2_1_0;
	       tim1_0_0 = tim2_0_0 + tim2_1_0;
	       tre1_1_0 = tre2_0_0 - tre2_1_0;
	       tim1_1_0 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[7 * istride]);
	       tim2_0_0 = c_im(in[7 * istride]);
	       tre2_1_0 = c_re(in[15 * istride]);
	       tim2_1_0 = c_im(in[15 * istride]);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  tre0_0_3 = tre1_0_0 + tre1_0_1;
	  tim0_0_3 = tim1_0_0 + tim1_0_1;
	  tre0_2_3 = tre1_0_0 - tre1_0_1;
	  tim0_2_3 = tim1_0_0 - tim1_0_1;
	  tre0_1_3 = tre1_1_0 - tim1_1_1;
	  tim0_1_3 = tim1_1_0 + tre1_1_1;
	  tre0_3_3 = tre1_1_0 + tim1_1_1;
	  tim0_3_3 = tim1_1_0 - tre1_1_1;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  tre1_0_0 = tre0_0_0 + tre0_0_2;
	  tim1_0_0 = tim0_0_0 + tim0_0_2;
	  tre1_1_0 = tre0_0_0 - tre0_0_2;
	  tim1_1_0 = tim0_0_0 - tim0_0_2;
	  tre1_0_1 = tre0_0_1 + tre0_0_3;
	  tim1_0_1 = tim0_0_1 + tim0_0_3;
	  tre1_1_1 = tre0_0_1 - tre0_0_3;
	  tim1_1_1 = tim0_0_1 - tim0_0_3;
	  c_re(out[0]) = tre1_0_0 + tre1_0_1;
	  c_im(out[0]) = tim1_0_0 + tim1_0_1;
	  c_re(out[8 * ostride]) = tre1_0_0 - tre1_0_1;
	  c_im(out[8 * ostride]) = tim1_0_0 - tim1_0_1;
	  c_re(out[4 * ostride]) = tre1_1_0 - tim1_1_1;
	  c_im(out[4 * ostride]) = tim1_1_0 + tre1_1_1;
	  c_re(out[12 * ostride]) = tre1_1_0 + tim1_1_1;
	  c_im(out[12 * ostride]) = tim1_1_0 - tre1_1_1;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  {
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_1_2 - tim0_1_2);
	       tim2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_1_2 + tre0_1_2);
	       tre1_0_0 = tre0_1_0 + tre2_1_0;
	       tim1_0_0 = tim0_1_0 + tim2_1_0;
	       tre1_1_0 = tre0_1_0 - tre2_1_0;
	       tim1_1_0 = tim0_1_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K923879532) * tre0_1_1) - (((FFTW_REAL) FFTW_K382683432) * tim0_1_1);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K923879532) * tim0_1_1) + (((FFTW_REAL) FFTW_K382683432) * tre0_1_1);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tre0_1_3) - (((FFTW_REAL) FFTW_K923879532) * tim0_1_3);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tim0_1_3) + (((FFTW_REAL) FFTW_K923879532) * tre0_1_3);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  c_re(out[ostride]) = tre1_0_0 + tre1_0_1;
	  c_im(out[ostride]) = tim1_0_0 + tim1_0_1;
	  c_re(out[9 * ostride]) = tre1_0_0 - tre1_0_1;
	  c_im(out[9 * ostride]) = tim1_0_0 - tim1_0_1;
	  c_re(out[5 * ostride]) = tre1_1_0 - tim1_1_1;
	  c_im(out[5 * ostride]) = tim1_1_0 + tre1_1_1;
	  c_re(out[13 * ostride]) = tre1_1_0 + tim1_1_1;
	  c_im(out[13 * ostride]) = tim1_1_0 - tre1_1_1;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  tre1_0_0 = tre0_2_0 - tim0_2_2;
	  tim1_0_0 = tim0_2_0 + tre0_2_2;
	  tre1_1_0 = tre0_2_0 + tim0_2_2;
	  tim1_1_0 = tim0_2_0 - tre0_2_2;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_2_1 - tim0_2_1);
	       tim2_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_2_1 + tre0_2_1);
	       tre2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_2_3 + tim0_2_3);
	       tim2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_2_3 - tim0_2_3);
	       tre1_0_1 = tre2_0_0 - tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 + tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  c_re(out[2 * ostride]) = tre1_0_0 + tre1_0_1;
	  c_im(out[2 * ostride]) = tim1_0_0 + tim1_0_1;
	  c_re(out[10 * ostride]) = tre1_0_0 - tre1_0_1;
	  c_im(out[10 * ostride]) = tim1_0_0 - tim1_0_1;
	  c_re(out[6 * ostride]) = tre1_1_0 - tim1_1_1;
	  c_im(out[6 * ostride]) = tim1_1_0 + tre1_1_1;
	  c_re(out[14 * ostride]) = tre1_1_0 + tim1_1_1;
	  c_im(out[14 * ostride]) = tim1_1_0 - tre1_1_1;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  {
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_3_2 + tim0_3_2);
	       tim2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_3_2 - tim0_3_2);
	       tre1_0_0 = tre0_3_0 - tre2_1_0;
	       tim1_0_0 = tim0_3_0 + tim2_1_0;
	       tre1_1_0 = tre0_3_0 + tre2_1_0;
	       tim1_1_0 = tim0_3_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K382683432) * tre0_3_1) - (((FFTW_REAL) FFTW_K923879532) * tim0_3_1);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K382683432) * tim0_3_1) + (((FFTW_REAL) FFTW_K923879532) * tre0_3_1);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tim0_3_3) - (((FFTW_REAL) FFTW_K923879532) * tre0_3_3);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K923879532) * tim0_3_3) + (((FFTW_REAL) FFTW_K382683432) * tre0_3_3);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 - tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 + tim2_1_0;
	  }
	  c_re(out[3 * ostride]) = tre1_0_0 + tre1_0_1;
	  c_im(out[3 * ostride]) = tim1_0_0 + tim1_0_1;
	  c_re(out[11 * ostride]) = tre1_0_0 - tre1_0_1;
	  c_im(out[11 * ostride]) = tim1_0_0 - tim1_0_1;
	  c_re(out[7 * ostride]) = tre1_1_0 - tim1_1_1;
	  c_im(out[7 * ostride]) = tim1_1_0 + tre1_1_1;
	  c_re(out[15 * ostride]) = tre1_1_0 + tim1_1_1;
	  c_im(out[15 * ostride]) = tim1_1_0 - tre1_1_1;
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 4 FP additions and 0 FP multiplications */

void fftwi_no_twiddle_2(const FFTW_COMPLEX *in, FFTW_COMPLEX *out, int istride, int ostride)
{
     FFTW_REAL tre0_0_0;
     FFTW_REAL tim0_0_0;
     FFTW_REAL tre0_1_0;
     FFTW_REAL tim0_1_0;
     tre0_0_0 = c_re(in[0]);
     tim0_0_0 = c_im(in[0]);
     tre0_1_0 = c_re(in[istride]);
     tim0_1_0 = c_im(in[istride]);
     c_re(out[0]) = tre0_0_0 + tre0_1_0;
     c_im(out[0]) = tim0_0_0 + tim0_1_0;
     c_re(out[ostride]) = tre0_0_0 - tre0_1_0;
     c_im(out[ostride]) = tim0_0_0 - tim0_1_0;
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 14 FP additions and 4 FP multiplications */

void fftwi_no_twiddle_3(const FFTW_COMPLEX *in, FFTW_COMPLEX *out, int istride, int ostride)
{
     FFTW_REAL tre0_0_0;
     FFTW_REAL tim0_0_0;
     FFTW_REAL tre0_1_0;
     FFTW_REAL tim0_1_0;
     FFTW_REAL tre0_2_0;
     FFTW_REAL tim0_2_0;
     tre0_0_0 = c_re(in[0]);
     tim0_0_0 = c_im(in[0]);
     tre0_1_0 = c_re(in[istride]);
     tim0_1_0 = c_im(in[istride]);
     tre0_2_0 = c_re(in[2 * istride]);
     tim0_2_0 = c_im(in[2 * istride]);
     c_re(out[0]) = tre0_0_0 + tre0_1_0 + tre0_2_0;
     c_im(out[0]) = tim0_0_0 + tim0_1_0 + tim0_2_0;
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tre1_1_0;
	  tre1_0_0 = tre0_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tre0_1_0 + tre0_2_0));
	  tre1_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tim0_2_0 - tim0_1_0);
	  c_re(out[ostride]) = tre1_0_0 + tre1_1_0;
	  c_re(out[2 * ostride]) = tre1_0_0 - tre1_1_0;
     }
     {
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tim1_1_0;
	  tim1_0_0 = tim0_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tim0_1_0 + tim0_2_0));
	  tim1_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tre0_1_0 - tre0_2_0);
	  c_im(out[ostride]) = tim1_0_0 + tim1_1_0;
	  c_im(out[2 * ostride]) = tim1_0_0 - tim1_1_0;
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 376 FP additions and 88 FP multiplications */

void fftwi_no_twiddle_32(const FFTW_COMPLEX *in, FFTW_COMPLEX *out, int istride, int ostride)
{
     FFTW_REAL tre0_0_0;
     FFTW_REAL tim0_0_0;
     FFTW_REAL tre0_0_1;
     FFTW_REAL tim0_0_1;
     FFTW_REAL tre0_0_2;
     FFTW_REAL tim0_0_2;
     FFTW_REAL tre0_0_3;
     FFTW_REAL tim0_0_3;
     FFTW_REAL tre0_0_4;
     FFTW_REAL tim0_0_4;
     FFTW_REAL tre0_0_5;
     FFTW_REAL tim0_0_5;
     FFTW_REAL tre0_0_6;
     FFTW_REAL tim0_0_6;
     FFTW_REAL tre0_0_7;
     FFTW_REAL tim0_0_7;
     FFTW_REAL tre0_1_0;
     FFTW_REAL tim0_1_0;
     FFTW_REAL tre0_1_1;
     FFTW_REAL tim0_1_1;
     FFTW_REAL tre0_1_2;
     FFTW_REAL tim0_1_2;
     FFTW_REAL tre0_1_3;
     FFTW_REAL tim0_1_3;
     FFTW_REAL tre0_1_4;
     FFTW_REAL tim0_1_4;
     FFTW_REAL tre0_1_5;
     FFTW_REAL tim0_1_5;
     FFTW_REAL tre0_1_6;
     FFTW_REAL tim0_1_6;
     FFTW_REAL tre0_1_7;
     FFTW_REAL tim0_1_7;
     FFTW_REAL tre0_2_0;
     FFTW_REAL tim0_2_0;
     FFTW_REAL tre0_2_1;
     FFTW_REAL tim0_2_1;
     FFTW_REAL tre0_2_2;
     FFTW_REAL tim0_2_2;
     FFTW_REAL tre0_2_3;
     FFTW_REAL tim0_2_3;
     FFTW_REAL tre0_2_4;
     FFTW_REAL tim0_2_4;
     FFTW_REAL tre0_2_5;
     FFTW_REAL tim0_2_5;
     FFTW_REAL tre0_2_6;
     FFTW_REAL tim0_2_6;
     FFTW_REAL tre0_2_7;
     FFTW_REAL tim0_2_7;
     FFTW_REAL tre0_3_0;
     FFTW_REAL tim0_3_0;
     FFTW_REAL tre0_3_1;
     FFTW_REAL tim0_3_1;
     FFTW_REAL tre0_3_2;
     FFTW_REAL tim0_3_2;
     FFTW_REAL tre0_3_3;
     FFTW_REAL tim0_3_3;
     FFTW_REAL tre0_3_4;
     FFTW_REAL tim0_3_4;
     FFTW_REAL tre0_3_5;
     FFTW_REAL tim0_3_5;
     FFTW_REAL tre0_3_6;
     FFTW_REAL tim0_3_6;
     FFTW_REAL tre0_3_7;
     FFTW_REAL tim0_3_7;
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[0]);
	       tim2_0_0 = c_im(in[0]);
	       tre2_1_0 = c_re(in[16 * istride]);
	       tim2_1_0 = c_im(in[16 * istride]);
	       tre1_0_0 = tre2_0_0 + tre2_1_0;
	       tim1_0_0 = tim2_0_0 + tim2_1_0;
	       tre1_1_0 = tre2_0_0 - tre2_1_0;
	       tim1_1_0 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[8 * istride]);
	       tim2_0_0 = c_im(in[8 * istride]);
	       tre2_1_0 = c_re(in[24 * istride]);
	       tim2_1_0 = c_im(in[24 * istride]);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  tre0_0_0 = tre1_0_0 + tre1_0_1;
	  tim0_0_0 = tim1_0_0 + tim1_0_1;
	  tre0_2_0 = tre1_0_0 - tre1_0_1;
	  tim0_2_0 = tim1_0_0 - tim1_0_1;
	  tre0_1_0 = tre1_1_0 - tim1_1_1;
	  tim0_1_0 = tim1_1_0 + tre1_1_1;
	  tre0_3_0 = tre1_1_0 + tim1_1_1;
	  tim0_3_0 = tim1_1_0 - tre1_1_1;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[istride]);
	       tim2_0_0 = c_im(in[istride]);
	       tre2_1_0 = c_re(in[17 * istride]);
	       tim2_1_0 = c_im(in[17 * istride]);
	       tre1_0_0 = tre2_0_0 + tre2_1_0;
	       tim1_0_0 = tim2_0_0 + tim2_1_0;
	       tre1_1_0 = tre2_0_0 - tre2_1_0;
	       tim1_1_0 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[9 * istride]);
	       tim2_0_0 = c_im(in[9 * istride]);
	       tre2_1_0 = c_re(in[25 * istride]);
	       tim2_1_0 = c_im(in[25 * istride]);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  tre0_0_1 = tre1_0_0 + tre1_0_1;
	  tim0_0_1 = tim1_0_0 + tim1_0_1;
	  tre0_2_1 = tre1_0_0 - tre1_0_1;
	  tim0_2_1 = tim1_0_0 - tim1_0_1;
	  tre0_1_1 = tre1_1_0 - tim1_1_1;
	  tim0_1_1 = tim1_1_0 + tre1_1_1;
	  tre0_3_1 = tre1_1_0 + tim1_1_1;
	  tim0_3_1 = tim1_1_0 - tre1_1_1;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[2 * istride]);
	       tim2_0_0 = c_im(in[2 * istride]);
	       tre2_1_0 = c_re(in[18 * istride]);
	       tim2_1_0 = c_im(in[18 * istride]);
	       tre1_0_0 = tre2_0_0 + tre2_1_0;
	       tim1_0_0 = tim2_0_0 + tim2_1_0;
	       tre1_1_0 = tre2_0_0 - tre2_1_0;
	       tim1_1_0 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[10 * istride]);
	       tim2_0_0 = c_im(in[10 * istride]);
	       tre2_1_0 = c_re(in[26 * istride]);
	       tim2_1_0 = c_im(in[26 * istride]);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  tre0_0_2 = tre1_0_0 + tre1_0_1;
	  tim0_0_2 = tim1_0_0 + tim1_0_1;
	  tre0_2_2 = tre1_0_0 - tre1_0_1;
	  tim0_2_2 = tim1_0_0 - tim1_0_1;
	  tre0_1_2 = tre1_1_0 - tim1_1_1;
	  tim0_1_2 = tim1_1_0 + tre1_1_1;
	  tre0_3_2 = tre1_1_0 + tim1_1_1;
	  tim0_3_2 = tim1_1_0 - tre1_1_1;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[3 * istride]);
	       tim2_0_0 = c_im(in[3 * istride]);
	       tre2_1_0 = c_re(in[19 * istride]);
	       tim2_1_0 = c_im(in[19 * istride]);
	       tre1_0_0 = tre2_0_0 + tre2_1_0;
	       tim1_0_0 = tim2_0_0 + tim2_1_0;
	       tre1_1_0 = tre2_0_0 - tre2_1_0;
	       tim1_1_0 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[11 * istride]);
	       tim2_0_0 = c_im(in[11 * istride]);
	       tre2_1_0 = c_re(in[27 * istride]);
	       tim2_1_0 = c_im(in[27 * istride]);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  tre0_0_3 = tre1_0_0 + tre1_0_1;
	  tim0_0_3 = tim1_0_0 + tim1_0_1;
	  tre0_2_3 = tre1_0_0 - tre1_0_1;
	  tim0_2_3 = tim1_0_0 - tim1_0_1;
	  tre0_1_3 = tre1_1_0 - tim1_1_1;
	  tim0_1_3 = tim1_1_0 + tre1_1_1;
	  tre0_3_3 = tre1_1_0 + tim1_1_1;
	  tim0_3_3 = tim1_1_0 - tre1_1_1;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[4 * istride]);
	       tim2_0_0 = c_im(in[4 * istride]);
	       tre2_1_0 = c_re(in[20 * istride]);
	       tim2_1_0 = c_im(in[20 * istride]);
	       tre1_0_0 = tre2_0_0 + tre2_1_0;
	       tim1_0_0 = tim2_0_0 + tim2_1_0;
	       tre1_1_0 = tre2_0_0 - tre2_1_0;
	       tim1_1_0 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[12 * istride]);
	       tim2_0_0 = c_im(in[12 * istride]);
	       tre2_1_0 = c_re(in[28 * istride]);
	       tim2_1_0 = c_im(in[28 * istride]);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  tre0_0_4 = tre1_0_0 + tre1_0_1;
	  tim0_0_4 = tim1_0_0 + tim1_0_1;
	  tre0_2_4 = tre1_0_0 - tre1_0_1;
	  tim0_2_4 = tim1_0_0 - tim1_0_1;
	  tre0_1_4 = tre1_1_0 - tim1_1_1;
	  tim0_1_4 = tim1_1_0 + tre1_1_1;
	  tre0_3_4 = tre1_1_0 + tim1_1_1;
	  tim0_3_4 = tim1_1_0 - tre1_1_1;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[5 * istride]);
	       tim2_0_0 = c_im(in[5 * istride]);
	       tre2_1_0 = c_re(in[21 * istride]);
	       tim2_1_0 = c_im(in[21 * istride]);
	       tre1_0_0 = tre2_0_0 + tre2_1_0;
	       tim1_0_0 = tim2_0_0 + tim2_1_0;
	       tre1_1_0 = tre2_0_0 - tre2_1_0;
	       tim1_1_0 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[13 * istride]);
	       tim2_0_0 = c_im(in[13 * istride]);
	       tre2_1_0 = c_re(in[29 * istride]);
	       tim2_1_0 = c_im(in[29 * istride]);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  tre0_0_5 = tre1_0_0 + tre1_0_1;
	  tim0_0_5 = tim1_0_0 + tim1_0_1;
	  tre0_2_5 = tre1_0_0 - tre1_0_1;
	  tim0_2_5 = tim1_0_0 - tim1_0_1;
	  tre0_1_5 = tre1_1_0 - tim1_1_1;
	  tim0_1_5 = tim1_1_0 + tre1_1_1;
	  tre0_3_5 = tre1_1_0 + tim1_1_1;
	  tim0_3_5 = tim1_1_0 - tre1_1_1;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[6 * istride]);
	       tim2_0_0 = c_im(in[6 * istride]);
	       tre2_1_0 = c_re(in[22 * istride]);
	       tim2_1_0 = c_im(in[22 * istride]);
	       tre1_0_0 = tre2_0_0 + tre2_1_0;
	       tim1_0_0 = tim2_0_0 + tim2_1_0;
	       tre1_1_0 = tre2_0_0 - tre2_1_0;
	       tim1_1_0 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[14 * istride]);
	       tim2_0_0 = c_im(in[14 * istride]);
	       tre2_1_0 = c_re(in[30 * istride]);
	       tim2_1_0 = c_im(in[30 * istride]);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  tre0_0_6 = tre1_0_0 + tre1_0_1;
	  tim0_0_6 = tim1_0_0 + tim1_0_1;
	  tre0_2_6 = tre1_0_0 - tre1_0_1;
	  tim0_2_6 = tim1_0_0 - tim1_0_1;
	  tre0_1_6 = tre1_1_0 - tim1_1_1;
	  tim0_1_6 = tim1_1_0 + tre1_1_1;
	  tre0_3_6 = tre1_1_0 + tim1_1_1;
	  tim0_3_6 = tim1_1_0 - tre1_1_1;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[7 * istride]);
	       tim2_0_0 = c_im(in[7 * istride]);
	       tre2_1_0 = c_re(in[23 * istride]);
	       tim2_1_0 = c_im(in[23 * istride]);
	       tre1_0_0 = tre2_0_0 + tre2_1_0;
	       tim1_0_0 = tim2_0_0 + tim2_1_0;
	       tre1_1_0 = tre2_0_0 - tre2_1_0;
	       tim1_1_0 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[15 * istride]);
	       tim2_0_0 = c_im(in[15 * istride]);
	       tre2_1_0 = c_re(in[31 * istride]);
	       tim2_1_0 = c_im(in[31 * istride]);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  tre0_0_7 = tre1_0_0 + tre1_0_1;
	  tim0_0_7 = tim1_0_0 + tim1_0_1;
	  tre0_2_7 = tre1_0_0 - tre1_0_1;
	  tim0_2_7 = tim1_0_0 - tim1_0_1;
	  tre0_1_7 = tre1_1_0 - tim1_1_1;
	  tim0_1_7 = tim1_1_0 + tre1_1_1;
	  tre0_3_7 = tre1_1_0 + tim1_1_1;
	  tim0_3_7 = tim1_1_0 - tre1_1_1;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_0_2;
	  FFTW_REAL tim1_0_2;
	  FFTW_REAL tre1_0_3;
	  FFTW_REAL tim1_0_3;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  FFTW_REAL tre1_1_2;
	  FFTW_REAL tim1_1_2;
	  FFTW_REAL tre1_1_3;
	  FFTW_REAL tim1_1_3;
	  tre1_0_0 = tre0_0_0 + tre0_0_4;
	  tim1_0_0 = tim0_0_0 + tim0_0_4;
	  tre1_1_0 = tre0_0_0 - tre0_0_4;
	  tim1_1_0 = tim0_0_0 - tim0_0_4;
	  tre1_0_1 = tre0_0_1 + tre0_0_5;
	  tim1_0_1 = tim0_0_1 + tim0_0_5;
	  tre1_1_1 = tre0_0_1 - tre0_0_5;
	  tim1_1_1 = tim0_0_1 - tim0_0_5;
	  tre1_0_2 = tre0_0_2 + tre0_0_6;
	  tim1_0_2 = tim0_0_2 + tim0_0_6;
	  tre1_1_2 = tre0_0_2 - tre0_0_6;
	  tim1_1_2 = tim0_0_2 - tim0_0_6;
	  tre1_0_3 = tre0_0_3 + tre0_0_7;
	  tim1_0_3 = tim0_0_3 + tim0_0_7;
	  tre1_1_3 = tre0_0_3 - tre0_0_7;
	  tim1_1_3 = tim0_0_3 - tim0_0_7;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_0_0 + tre1_0_2;
	       tim2_0_0 = tim1_0_0 + tim1_0_2;
	       tre2_1_0 = tre1_0_0 - tre1_0_2;
	       tim2_1_0 = tim1_0_0 - tim1_0_2;
	       tre2_0_1 = tre1_0_1 + tre1_0_3;
	       tim2_0_1 = tim1_0_1 + tim1_0_3;
	       tre2_1_1 = tre1_0_1 - tre1_0_3;
	       tim2_1_1 = tim1_0_1 - tim1_0_3;
	       c_re(out[0]) = tre2_0_0 + tre2_0_1;
	       c_im(out[0]) = tim2_0_0 + tim2_0_1;
	       c_re(out[16 * ostride]) = tre2_0_0 - tre2_0_1;
	       c_im(out[16 * ostride]) = tim2_0_0 - tim2_0_1;
	       c_re(out[8 * ostride]) = tre2_1_0 - tim2_1_1;
	       c_im(out[8 * ostride]) = tim2_1_0 + tre2_1_1;
	       c_re(out[24 * ostride]) = tre2_1_0 + tim2_1_1;
	       c_im(out[24 * ostride]) = tim2_1_0 - tre2_1_1;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_1_0 - tim1_1_2;
	       tim2_0_0 = tim1_1_0 + tre1_1_2;
	       tre2_1_0 = tre1_1_0 + tim1_1_2;
	       tim2_1_0 = tim1_1_0 - tre1_1_2;
	       {
		    FFTW_REAL tre3_0_0;
		    FFTW_REAL tim3_0_0;
		    FFTW_REAL tre3_1_0;
		    FFTW_REAL tim3_1_0;
		    tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 - tim1_1_1);
		    tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 + tre1_1_1);
		    tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 + tim1_1_3);
		    tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 - tim1_1_3);
		    tre2_0_1 = tre3_0_0 - tre3_1_0;
		    tim2_0_1 = tim3_0_0 + tim3_1_0;
		    tre2_1_1 = tre3_0_0 + tre3_1_0;
		    tim2_1_1 = tim3_0_0 - tim3_1_0;
	       }
	       c_re(out[4 * ostride]) = tre2_0_0 + tre2_0_1;
	       c_im(out[4 * ostride]) = tim2_0_0 + tim2_0_1;
	       c_re(out[20 * ostride]) = tre2_0_0 - tre2_0_1;
	       c_im(out[20 * ostride]) = tim2_0_0 - tim2_0_1;
	       c_re(out[12 * ostride]) = tre2_1_0 - tim2_1_1;
	       c_im(out[12 * ostride]) = tim2_1_0 + tre2_1_1;
	       c_re(out[28 * ostride]) = tre2_1_0 + tim2_1_1;
	       c_im(out[28 * ostride]) = tim2_1_0 - tre2_1_1;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_0_2;
	  FFTW_REAL tim1_0_2;
	  FFTW_REAL tre1_0_3;
	  FFTW_REAL tim1_0_3;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  FFTW_REAL tre1_1_2;
	  FFTW_REAL tim1_1_2;
	  FFTW_REAL tre1_1_3;
	  FFTW_REAL tim1_1_3;
	  {
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_1_4 - tim0_1_4);
	       tim2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_1_4 + tre0_1_4);
	       tre1_0_0 = tre0_1_0 + tre2_1_0;
	       tim1_0_0 = tim0_1_0 + tim2_1_0;
	       tre1_1_0 = tre0_1_0 - tre2_1_0;
	       tim1_1_0 = tim0_1_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K980785280) * tre0_1_1) - (((FFTW_REAL) FFTW_K195090322) * tim0_1_1);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K980785280) * tim0_1_1) + (((FFTW_REAL) FFTW_K195090322) * tre0_1_1);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K555570233) * tre0_1_5) - (((FFTW_REAL) FFTW_K831469612) * tim0_1_5);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K555570233) * tim0_1_5) + (((FFTW_REAL) FFTW_K831469612) * tre0_1_5);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K923879532) * tre0_1_2) - (((FFTW_REAL) FFTW_K382683432) * tim0_1_2);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K923879532) * tim0_1_2) + (((FFTW_REAL) FFTW_K382683432) * tre0_1_2);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tre0_1_6) - (((FFTW_REAL) FFTW_K923879532) * tim0_1_6);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tim0_1_6) + (((FFTW_REAL) FFTW_K923879532) * tre0_1_6);
	       tre1_0_2 = tre2_0_0 + tre2_1_0;
	       tim1_0_2 = tim2_0_0 + tim2_1_0;
	       tre1_1_2 = tre2_0_0 - tre2_1_0;
	       tim1_1_2 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K831469612) * tre0_1_3) - (((FFTW_REAL) FFTW_K555570233) * tim0_1_3);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K831469612) * tim0_1_3) + (((FFTW_REAL) FFTW_K555570233) * tre0_1_3);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K195090322) * tre0_1_7) - (((FFTW_REAL) FFTW_K980785280) * tim0_1_7);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K195090322) * tim0_1_7) + (((FFTW_REAL) FFTW_K980785280) * tre0_1_7);
	       tre1_0_3 = tre2_0_0 + tre2_1_0;
	       tim1_0_3 = tim2_0_0 + tim2_1_0;
	       tre1_1_3 = tre2_0_0 - tre2_1_0;
	       tim1_1_3 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_0_0 + tre1_0_2;
	       tim2_0_0 = tim1_0_0 + tim1_0_2;
	       tre2_1_0 = tre1_0_0 - tre1_0_2;
	       tim2_1_0 = tim1_0_0 - tim1_0_2;
	       tre2_0_1 = tre1_0_1 + tre1_0_3;
	       tim2_0_1 = tim1_0_1 + tim1_0_3;
	       tre2_1_1 = tre1_0_1 - tre1_0_3;
	       tim2_1_1 = tim1_0_1 - tim1_0_3;
	       c_re(out[ostride]) = tre2_0_0 + tre2_0_1;
	       c_im(out[ostride]) = tim2_0_0 + tim2_0_1;
	       c_re(out[17 * ostride]) = tre2_0_0 - tre2_0_1;
	       c_im(out[17 * ostride]) = tim2_0_0 - tim2_0_1;
	       c_re(out[9 * ostride]) = tre2_1_0 - tim2_1_1;
	       c_im(out[9 * ostride]) = tim2_1_0 + tre2_1_1;
	       c_re(out[25 * ostride]) = tre2_1_0 + tim2_1_1;
	       c_im(out[25 * ostride]) = tim2_1_0 - tre2_1_1;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_1_0 - tim1_1_2;
	       tim2_0_0 = tim1_1_0 + tre1_1_2;
	       tre2_1_0 = tre1_1_0 + tim1_1_2;
	       tim2_1_0 = tim1_1_0 - tre1_1_2;
	       {
		    FFTW_REAL tre3_0_0;
		    FFTW_REAL tim3_0_0;
		    FFTW_REAL tre3_1_0;
		    FFTW_REAL tim3_1_0;
		    tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 - tim1_1_1);
		    tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 + tre1_1_1);
		    tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 + tim1_1_3);
		    tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 - tim1_1_3);
		    tre2_0_1 = tre3_0_0 - tre3_1_0;
		    tim2_0_1 = tim3_0_0 + tim3_1_0;
		    tre2_1_1 = tre3_0_0 + tre3_1_0;
		    tim2_1_1 = tim3_0_0 - tim3_1_0;
	       }
	       c_re(out[5 * ostride]) = tre2_0_0 + tre2_0_1;
	       c_im(out[5 * ostride]) = tim2_0_0 + tim2_0_1;
	       c_re(out[21 * ostride]) = tre2_0_0 - tre2_0_1;
	       c_im(out[21 * ostride]) = tim2_0_0 - tim2_0_1;
	       c_re(out[13 * ostride]) = tre2_1_0 - tim2_1_1;
	       c_im(out[13 * ostride]) = tim2_1_0 + tre2_1_1;
	       c_re(out[29 * ostride]) = tre2_1_0 + tim2_1_1;
	       c_im(out[29 * ostride]) = tim2_1_0 - tre2_1_1;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_0_2;
	  FFTW_REAL tim1_0_2;
	  FFTW_REAL tre1_0_3;
	  FFTW_REAL tim1_0_3;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  FFTW_REAL tre1_1_2;
	  FFTW_REAL tim1_1_2;
	  FFTW_REAL tre1_1_3;
	  FFTW_REAL tim1_1_3;
	  tre1_0_0 = tre0_2_0 - tim0_2_4;
	  tim1_0_0 = tim0_2_0 + tre0_2_4;
	  tre1_1_0 = tre0_2_0 + tim0_2_4;
	  tim1_1_0 = tim0_2_0 - tre0_2_4;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K923879532) * tre0_2_1) - (((FFTW_REAL) FFTW_K382683432) * tim0_2_1);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K923879532) * tim0_2_1) + (((FFTW_REAL) FFTW_K382683432) * tre0_2_1);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tre0_2_5) + (((FFTW_REAL) FFTW_K923879532) * tim0_2_5);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K923879532) * tre0_2_5) - (((FFTW_REAL) FFTW_K382683432) * tim0_2_5);
	       tre1_0_1 = tre2_0_0 - tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 + tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_2_2 - tim0_2_2);
	       tim2_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_2_2 + tre0_2_2);
	       tre2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_2_6 + tim0_2_6);
	       tim2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_2_6 - tim0_2_6);
	       tre1_0_2 = tre2_0_0 - tre2_1_0;
	       tim1_0_2 = tim2_0_0 + tim2_1_0;
	       tre1_1_2 = tre2_0_0 + tre2_1_0;
	       tim1_1_2 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K382683432) * tre0_2_3) - (((FFTW_REAL) FFTW_K923879532) * tim0_2_3);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K382683432) * tim0_2_3) + (((FFTW_REAL) FFTW_K923879532) * tre0_2_3);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K923879532) * tre0_2_7) + (((FFTW_REAL) FFTW_K382683432) * tim0_2_7);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tre0_2_7) - (((FFTW_REAL) FFTW_K923879532) * tim0_2_7);
	       tre1_0_3 = tre2_0_0 - tre2_1_0;
	       tim1_0_3 = tim2_0_0 + tim2_1_0;
	       tre1_1_3 = tre2_0_0 + tre2_1_0;
	       tim1_1_3 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_0_0 + tre1_0_2;
	       tim2_0_0 = tim1_0_0 + tim1_0_2;
	       tre2_1_0 = tre1_0_0 - tre1_0_2;
	       tim2_1_0 = tim1_0_0 - tim1_0_2;
	       tre2_0_1 = tre1_0_1 + tre1_0_3;
	       tim2_0_1 = tim1_0_1 + tim1_0_3;
	       tre2_1_1 = tre1_0_1 - tre1_0_3;
	       tim2_1_1 = tim1_0_1 - tim1_0_3;
	       c_re(out[2 * ostride]) = tre2_0_0 + tre2_0_1;
	       c_im(out[2 * ostride]) = tim2_0_0 + tim2_0_1;
	       c_re(out[18 * ostride]) = tre2_0_0 - tre2_0_1;
	       c_im(out[18 * ostride]) = tim2_0_0 - tim2_0_1;
	       c_re(out[10 * ostride]) = tre2_1_0 - tim2_1_1;
	       c_im(out[10 * ostride]) = tim2_1_0 + tre2_1_1;
	       c_re(out[26 * ostride]) = tre2_1_0 + tim2_1_1;
	       c_im(out[26 * ostride]) = tim2_1_0 - tre2_1_1;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_1_0 - tim1_1_2;
	       tim2_0_0 = tim1_1_0 + tre1_1_2;
	       tre2_1_0 = tre1_1_0 + tim1_1_2;
	       tim2_1_0 = tim1_1_0 - tre1_1_2;
	       {
		    FFTW_REAL tre3_0_0;
		    FFTW_REAL tim3_0_0;
		    FFTW_REAL tre3_1_0;
		    FFTW_REAL tim3_1_0;
		    tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 - tim1_1_1);
		    tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 + tre1_1_1);
		    tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 + tim1_1_3);
		    tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 - tim1_1_3);
		    tre2_0_1 = tre3_0_0 - tre3_1_0;
		    tim2_0_1 = tim3_0_0 + tim3_1_0;
		    tre2_1_1 = tre3_0_0 + tre3_1_0;
		    tim2_1_1 = tim3_0_0 - tim3_1_0;
	       }
	       c_re(out[6 * ostride]) = tre2_0_0 + tre2_0_1;
	       c_im(out[6 * ostride]) = tim2_0_0 + tim2_0_1;
	       c_re(out[22 * ostride]) = tre2_0_0 - tre2_0_1;
	       c_im(out[22 * ostride]) = tim2_0_0 - tim2_0_1;
	       c_re(out[14 * ostride]) = tre2_1_0 - tim2_1_1;
	       c_im(out[14 * ostride]) = tim2_1_0 + tre2_1_1;
	       c_re(out[30 * ostride]) = tre2_1_0 + tim2_1_1;
	       c_im(out[30 * ostride]) = tim2_1_0 - tre2_1_1;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_0_2;
	  FFTW_REAL tim1_0_2;
	  FFTW_REAL tre1_0_3;
	  FFTW_REAL tim1_0_3;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  FFTW_REAL tre1_1_2;
	  FFTW_REAL tim1_1_2;
	  FFTW_REAL tre1_1_3;
	  FFTW_REAL tim1_1_3;
	  {
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_3_4 + tim0_3_4);
	       tim2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_3_4 - tim0_3_4);
	       tre1_0_0 = tre0_3_0 - tre2_1_0;
	       tim1_0_0 = tim0_3_0 + tim2_1_0;
	       tre1_1_0 = tre0_3_0 + tre2_1_0;
	       tim1_1_0 = tim0_3_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K831469612) * tre0_3_1) - (((FFTW_REAL) FFTW_K555570233) * tim0_3_1);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K831469612) * tim0_3_1) + (((FFTW_REAL) FFTW_K555570233) * tre0_3_1);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K980785280) * tre0_3_5) + (((FFTW_REAL) FFTW_K195090322) * tim0_3_5);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K195090322) * tre0_3_5) - (((FFTW_REAL) FFTW_K980785280) * tim0_3_5);
	       tre1_0_1 = tre2_0_0 - tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 + tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K382683432) * tre0_3_2) - (((FFTW_REAL) FFTW_K923879532) * tim0_3_2);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K382683432) * tim0_3_2) + (((FFTW_REAL) FFTW_K923879532) * tre0_3_2);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tim0_3_6) - (((FFTW_REAL) FFTW_K923879532) * tre0_3_6);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K923879532) * tim0_3_6) + (((FFTW_REAL) FFTW_K382683432) * tre0_3_6);
	       tre1_0_2 = tre2_0_0 + tre2_1_0;
	       tim1_0_2 = tim2_0_0 - tim2_1_0;
	       tre1_1_2 = tre2_0_0 - tre2_1_0;
	       tim1_1_2 = tim2_0_0 + tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K195090322) * tre0_3_3) + (((FFTW_REAL) FFTW_K980785280) * tim0_3_3);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K980785280) * tre0_3_3) - (((FFTW_REAL) FFTW_K195090322) * tim0_3_3);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K831469612) * tim0_3_7) - (((FFTW_REAL) FFTW_K555570233) * tre0_3_7);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K555570233) * tim0_3_7) + (((FFTW_REAL) FFTW_K831469612) * tre0_3_7);
	       tre1_0_3 = tre2_1_0 - tre2_0_0;
	       tim1_0_3 = tim2_0_0 - tim2_1_0;
	       tre1_1_3 = (-(tre2_0_0 + tre2_1_0));
	       tim1_1_3 = tim2_0_0 + tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_0_0 + tre1_0_2;
	       tim2_0_0 = tim1_0_0 + tim1_0_2;
	       tre2_1_0 = tre1_0_0 - tre1_0_2;
	       tim2_1_0 = tim1_0_0 - tim1_0_2;
	       tre2_0_1 = tre1_0_1 + tre1_0_3;
	       tim2_0_1 = tim1_0_1 + tim1_0_3;
	       tre2_1_1 = tre1_0_1 - tre1_0_3;
	       tim2_1_1 = tim1_0_1 - tim1_0_3;
	       c_re(out[3 * ostride]) = tre2_0_0 + tre2_0_1;
	       c_im(out[3 * ostride]) = tim2_0_0 + tim2_0_1;
	       c_re(out[19 * ostride]) = tre2_0_0 - tre2_0_1;
	       c_im(out[19 * ostride]) = tim2_0_0 - tim2_0_1;
	       c_re(out[11 * ostride]) = tre2_1_0 - tim2_1_1;
	       c_im(out[11 * ostride]) = tim2_1_0 + tre2_1_1;
	       c_re(out[27 * ostride]) = tre2_1_0 + tim2_1_1;
	       c_im(out[27 * ostride]) = tim2_1_0 - tre2_1_1;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_1_0 - tim1_1_2;
	       tim2_0_0 = tim1_1_0 + tre1_1_2;
	       tre2_1_0 = tre1_1_0 + tim1_1_2;
	       tim2_1_0 = tim1_1_0 - tre1_1_2;
	       {
		    FFTW_REAL tre3_0_0;
		    FFTW_REAL tim3_0_0;
		    FFTW_REAL tre3_1_0;
		    FFTW_REAL tim3_1_0;
		    tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 - tim1_1_1);
		    tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 + tre1_1_1);
		    tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 + tim1_1_3);
		    tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 - tim1_1_3);
		    tre2_0_1 = tre3_0_0 - tre3_1_0;
		    tim2_0_1 = tim3_0_0 + tim3_1_0;
		    tre2_1_1 = tre3_0_0 + tre3_1_0;
		    tim2_1_1 = tim3_0_0 - tim3_1_0;
	       }
	       c_re(out[7 * ostride]) = tre2_0_0 + tre2_0_1;
	       c_im(out[7 * ostride]) = tim2_0_0 + tim2_0_1;
	       c_re(out[23 * ostride]) = tre2_0_0 - tre2_0_1;
	       c_im(out[23 * ostride]) = tim2_0_0 - tim2_0_1;
	       c_re(out[15 * ostride]) = tre2_1_0 - tim2_1_1;
	       c_im(out[15 * ostride]) = tim2_1_0 + tre2_1_1;
	       c_re(out[31 * ostride]) = tre2_1_0 + tim2_1_1;
	       c_im(out[31 * ostride]) = tim2_1_0 - tre2_1_1;
	  }
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 16 FP additions and 0 FP multiplications */

void fftwi_no_twiddle_4(const FFTW_COMPLEX *in, FFTW_COMPLEX *out, int istride, int ostride)
{
     FFTW_REAL tre0_0_0;
     FFTW_REAL tim0_0_0;
     FFTW_REAL tre0_0_1;
     FFTW_REAL tim0_0_1;
     FFTW_REAL tre0_1_0;
     FFTW_REAL tim0_1_0;
     FFTW_REAL tre0_1_1;
     FFTW_REAL tim0_1_1;
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  tre1_0_0 = c_re(in[0]);
	  tim1_0_0 = c_im(in[0]);
	  tre1_1_0 = c_re(in[2 * istride]);
	  tim1_1_0 = c_im(in[2 * istride]);
	  tre0_0_0 = tre1_0_0 + tre1_1_0;
	  tim0_0_0 = tim1_0_0 + tim1_1_0;
	  tre0_1_0 = tre1_0_0 - tre1_1_0;
	  tim0_1_0 = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  tre1_0_0 = c_re(in[istride]);
	  tim1_0_0 = c_im(in[istride]);
	  tre1_1_0 = c_re(in[3 * istride]);
	  tim1_1_0 = c_im(in[3 * istride]);
	  tre0_0_1 = tre1_0_0 + tre1_1_0;
	  tim0_0_1 = tim1_0_0 + tim1_1_0;
	  tre0_1_1 = tre1_0_0 - tre1_1_0;
	  tim0_1_1 = tim1_0_0 - tim1_1_0;
     }
     c_re(out[0]) = tre0_0_0 + tre0_0_1;
     c_im(out[0]) = tim0_0_0 + tim0_0_1;
     c_re(out[2 * ostride]) = tre0_0_0 - tre0_0_1;
     c_im(out[2 * ostride]) = tim0_0_0 - tim0_0_1;
     c_re(out[ostride]) = tre0_1_0 - tim0_1_1;
     c_im(out[ostride]) = tim0_1_0 + tre0_1_1;
     c_re(out[3 * ostride]) = tre0_1_0 + tim0_1_1;
     c_im(out[3 * ostride]) = tim0_1_0 - tre0_1_1;
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 44 FP additions and 16 FP multiplications */

void fftwi_no_twiddle_5(const FFTW_COMPLEX *in, FFTW_COMPLEX *out, int istride, int ostride)
{
     FFTW_REAL tre0_0_0;
     FFTW_REAL tim0_0_0;
     FFTW_REAL tre0_1_0;
     FFTW_REAL tim0_1_0;
     FFTW_REAL tre0_2_0;
     FFTW_REAL tim0_2_0;
     FFTW_REAL tre0_3_0;
     FFTW_REAL tim0_3_0;
     FFTW_REAL tre0_4_0;
     FFTW_REAL tim0_4_0;
     tre0_0_0 = c_re(in[0]);
     tim0_0_0 = c_im(in[0]);
     tre0_1_0 = c_re(in[istride]);
     tim0_1_0 = c_im(in[istride]);
     tre0_2_0 = c_re(in[2 * istride]);
     tim0_2_0 = c_im(in[2 * istride]);
     tre0_3_0 = c_re(in[3 * istride]);
     tim0_3_0 = c_im(in[3 * istride]);
     tre0_4_0 = c_re(in[4 * istride]);
     tim0_4_0 = c_im(in[4 * istride]);
     c_re(out[0]) = tre0_0_0 + tre0_1_0 + tre0_2_0 + tre0_3_0 + tre0_4_0;
     c_im(out[0]) = tim0_0_0 + tim0_1_0 + tim0_2_0 + tim0_3_0 + tim0_4_0;
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tre1_1_0;
	  tre1_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K309016994) * (tre0_1_0 + tre0_4_0)) - (((FFTW_REAL) FFTW_K809016994) * (tre0_2_0 + tre0_3_0));
	  tre1_1_0 = (((FFTW_REAL) FFTW_K951056516) * (tim0_4_0 - tim0_1_0)) + (((FFTW_REAL) FFTW_K587785252) * (tim0_3_0 - tim0_2_0));
	  c_re(out[ostride]) = tre1_0_0 + tre1_1_0;
	  c_re(out[4 * ostride]) = tre1_0_0 - tre1_1_0;
     }
     {
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tim1_1_0;
	  tim1_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K309016994) * (tim0_1_0 + tim0_4_0)) - (((FFTW_REAL) FFTW_K809016994) * (tim0_2_0 + tim0_3_0));
	  tim1_1_0 = (((FFTW_REAL) FFTW_K951056516) * (tre0_1_0 - tre0_4_0)) + (((FFTW_REAL) FFTW_K587785252) * (tre0_2_0 - tre0_3_0));
	  c_im(out[ostride]) = tim1_0_0 + tim1_1_0;
	  c_im(out[4 * ostride]) = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tre1_1_0;
	  tre1_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K309016994) * (tre0_2_0 + tre0_3_0)) - (((FFTW_REAL) FFTW_K809016994) * (tre0_1_0 + tre0_4_0));
	  tre1_1_0 = (((FFTW_REAL) FFTW_K587785252) * (tim0_4_0 - tim0_1_0)) + (((FFTW_REAL) FFTW_K951056516) * (tim0_2_0 - tim0_3_0));
	  c_re(out[2 * ostride]) = tre1_0_0 + tre1_1_0;
	  c_re(out[3 * ostride]) = tre1_0_0 - tre1_1_0;
     }
     {
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tim1_1_0;
	  tim1_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K309016994) * (tim0_2_0 + tim0_3_0)) - (((FFTW_REAL) FFTW_K809016994) * (tim0_1_0 + tim0_4_0));
	  tim1_1_0 = (((FFTW_REAL) FFTW_K587785252) * (tre0_1_0 - tre0_4_0)) + (((FFTW_REAL) FFTW_K951056516) * (tre0_3_0 - tre0_2_0));
	  c_im(out[2 * ostride]) = tim1_0_0 + tim1_1_0;
	  c_im(out[3 * ostride]) = tim1_0_0 - tim1_1_0;
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 40 FP additions and 8 FP multiplications */

void fftwi_no_twiddle_6(const FFTW_COMPLEX *in, FFTW_COMPLEX *out, int istride, int ostride)
{
     FFTW_REAL tre0_0_0;
     FFTW_REAL tim0_0_0;
     FFTW_REAL tre0_0_1;
     FFTW_REAL tim0_0_1;
     FFTW_REAL tre0_0_2;
     FFTW_REAL tim0_0_2;
     FFTW_REAL tre0_1_0;
     FFTW_REAL tim0_1_0;
     FFTW_REAL tre0_1_1;
     FFTW_REAL tim0_1_1;
     FFTW_REAL tre0_1_2;
     FFTW_REAL tim0_1_2;
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  tre1_0_0 = c_re(in[0]);
	  tim1_0_0 = c_im(in[0]);
	  tre1_1_0 = c_re(in[3 * istride]);
	  tim1_1_0 = c_im(in[3 * istride]);
	  tre0_0_0 = tre1_0_0 + tre1_1_0;
	  tim0_0_0 = tim1_0_0 + tim1_1_0;
	  tre0_1_0 = tre1_0_0 - tre1_1_0;
	  tim0_1_0 = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  tre1_0_0 = c_re(in[2 * istride]);
	  tim1_0_0 = c_im(in[2 * istride]);
	  tre1_1_0 = c_re(in[5 * istride]);
	  tim1_1_0 = c_im(in[5 * istride]);
	  tre0_0_1 = tre1_0_0 + tre1_1_0;
	  tim0_0_1 = tim1_0_0 + tim1_1_0;
	  tre0_1_1 = tre1_0_0 - tre1_1_0;
	  tim0_1_1 = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  tre1_0_0 = c_re(in[4 * istride]);
	  tim1_0_0 = c_im(in[4 * istride]);
	  tre1_1_0 = c_re(in[istride]);
	  tim1_1_0 = c_im(in[istride]);
	  tre0_0_2 = tre1_0_0 + tre1_1_0;
	  tim0_0_2 = tim1_0_0 + tim1_1_0;
	  tre0_1_2 = tre1_0_0 - tre1_1_0;
	  tim0_1_2 = tim1_0_0 - tim1_1_0;
     }
     c_re(out[0]) = tre0_0_0 + tre0_0_1 + tre0_0_2;
     c_im(out[0]) = tim0_0_0 + tim0_0_1 + tim0_0_2;
     {
	  FFTW_REAL tre2_0_0;
	  FFTW_REAL tre2_1_0;
	  tre2_0_0 = tre0_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tre0_0_1 + tre0_0_2));
	  tre2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tim0_0_2 - tim0_0_1);
	  c_re(out[4 * ostride]) = tre2_0_0 + tre2_1_0;
	  c_re(out[2 * ostride]) = tre2_0_0 - tre2_1_0;
     }
     {
	  FFTW_REAL tim2_0_0;
	  FFTW_REAL tim2_1_0;
	  tim2_0_0 = tim0_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tim0_0_1 + tim0_0_2));
	  tim2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tre0_0_1 - tre0_0_2);
	  c_im(out[4 * ostride]) = tim2_0_0 + tim2_1_0;
	  c_im(out[2 * ostride]) = tim2_0_0 - tim2_1_0;
     }
     c_re(out[3 * ostride]) = tre0_1_0 + tre0_1_1 + tre0_1_2;
     c_im(out[3 * ostride]) = tim0_1_0 + tim0_1_1 + tim0_1_2;
     {
	  FFTW_REAL tre2_0_0;
	  FFTW_REAL tre2_1_0;
	  tre2_0_0 = tre0_1_0 - (((FFTW_REAL) FFTW_K499999999) * (tre0_1_1 + tre0_1_2));
	  tre2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tim0_1_2 - tim0_1_1);
	  c_re(out[ostride]) = tre2_0_0 + tre2_1_0;
	  c_re(out[5 * ostride]) = tre2_0_0 - tre2_1_0;
     }
     {
	  FFTW_REAL tim2_0_0;
	  FFTW_REAL tim2_1_0;
	  tim2_0_0 = tim0_1_0 - (((FFTW_REAL) FFTW_K499999999) * (tim0_1_1 + tim0_1_2));
	  tim2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tre0_1_1 - tre0_1_2);
	  c_im(out[ostride]) = tim2_0_0 + tim2_1_0;
	  c_im(out[5 * ostride]) = tim2_0_0 - tim2_1_0;
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 928 FP additions and 248 FP multiplications */

void fftwi_no_twiddle_64(const FFTW_COMPLEX *in, FFTW_COMPLEX *out, int istride, int ostride)
{
     FFTW_REAL tre0_0_0;
     FFTW_REAL tim0_0_0;
     FFTW_REAL tre0_0_1;
     FFTW_REAL tim0_0_1;
     FFTW_REAL tre0_0_2;
     FFTW_REAL tim0_0_2;
     FFTW_REAL tre0_0_3;
     FFTW_REAL tim0_0_3;
     FFTW_REAL tre0_0_4;
     FFTW_REAL tim0_0_4;
     FFTW_REAL tre0_0_5;
     FFTW_REAL tim0_0_5;
     FFTW_REAL tre0_0_6;
     FFTW_REAL tim0_0_6;
     FFTW_REAL tre0_0_7;
     FFTW_REAL tim0_0_7;
     FFTW_REAL tre0_1_0;
     FFTW_REAL tim0_1_0;
     FFTW_REAL tre0_1_1;
     FFTW_REAL tim0_1_1;
     FFTW_REAL tre0_1_2;
     FFTW_REAL tim0_1_2;
     FFTW_REAL tre0_1_3;
     FFTW_REAL tim0_1_3;
     FFTW_REAL tre0_1_4;
     FFTW_REAL tim0_1_4;
     FFTW_REAL tre0_1_5;
     FFTW_REAL tim0_1_5;
     FFTW_REAL tre0_1_6;
     FFTW_REAL tim0_1_6;
     FFTW_REAL tre0_1_7;
     FFTW_REAL tim0_1_7;
     FFTW_REAL tre0_2_0;
     FFTW_REAL tim0_2_0;
     FFTW_REAL tre0_2_1;
     FFTW_REAL tim0_2_1;
     FFTW_REAL tre0_2_2;
     FFTW_REAL tim0_2_2;
     FFTW_REAL tre0_2_3;
     FFTW_REAL tim0_2_3;
     FFTW_REAL tre0_2_4;
     FFTW_REAL tim0_2_4;
     FFTW_REAL tre0_2_5;
     FFTW_REAL tim0_2_5;
     FFTW_REAL tre0_2_6;
     FFTW_REAL tim0_2_6;
     FFTW_REAL tre0_2_7;
     FFTW_REAL tim0_2_7;
     FFTW_REAL tre0_3_0;
     FFTW_REAL tim0_3_0;
     FFTW_REAL tre0_3_1;
     FFTW_REAL tim0_3_1;
     FFTW_REAL tre0_3_2;
     FFTW_REAL tim0_3_2;
     FFTW_REAL tre0_3_3;
     FFTW_REAL tim0_3_3;
     FFTW_REAL tre0_3_4;
     FFTW_REAL tim0_3_4;
     FFTW_REAL tre0_3_5;
     FFTW_REAL tim0_3_5;
     FFTW_REAL tre0_3_6;
     FFTW_REAL tim0_3_6;
     FFTW_REAL tre0_3_7;
     FFTW_REAL tim0_3_7;
     FFTW_REAL tre0_4_0;
     FFTW_REAL tim0_4_0;
     FFTW_REAL tre0_4_1;
     FFTW_REAL tim0_4_1;
     FFTW_REAL tre0_4_2;
     FFTW_REAL tim0_4_2;
     FFTW_REAL tre0_4_3;
     FFTW_REAL tim0_4_3;
     FFTW_REAL tre0_4_4;
     FFTW_REAL tim0_4_4;
     FFTW_REAL tre0_4_5;
     FFTW_REAL tim0_4_5;
     FFTW_REAL tre0_4_6;
     FFTW_REAL tim0_4_6;
     FFTW_REAL tre0_4_7;
     FFTW_REAL tim0_4_7;
     FFTW_REAL tre0_5_0;
     FFTW_REAL tim0_5_0;
     FFTW_REAL tre0_5_1;
     FFTW_REAL tim0_5_1;
     FFTW_REAL tre0_5_2;
     FFTW_REAL tim0_5_2;
     FFTW_REAL tre0_5_3;
     FFTW_REAL tim0_5_3;
     FFTW_REAL tre0_5_4;
     FFTW_REAL tim0_5_4;
     FFTW_REAL tre0_5_5;
     FFTW_REAL tim0_5_5;
     FFTW_REAL tre0_5_6;
     FFTW_REAL tim0_5_6;
     FFTW_REAL tre0_5_7;
     FFTW_REAL tim0_5_7;
     FFTW_REAL tre0_6_0;
     FFTW_REAL tim0_6_0;
     FFTW_REAL tre0_6_1;
     FFTW_REAL tim0_6_1;
     FFTW_REAL tre0_6_2;
     FFTW_REAL tim0_6_2;
     FFTW_REAL tre0_6_3;
     FFTW_REAL tim0_6_3;
     FFTW_REAL tre0_6_4;
     FFTW_REAL tim0_6_4;
     FFTW_REAL tre0_6_5;
     FFTW_REAL tim0_6_5;
     FFTW_REAL tre0_6_6;
     FFTW_REAL tim0_6_6;
     FFTW_REAL tre0_6_7;
     FFTW_REAL tim0_6_7;
     FFTW_REAL tre0_7_0;
     FFTW_REAL tim0_7_0;
     FFTW_REAL tre0_7_1;
     FFTW_REAL tim0_7_1;
     FFTW_REAL tre0_7_2;
     FFTW_REAL tim0_7_2;
     FFTW_REAL tre0_7_3;
     FFTW_REAL tim0_7_3;
     FFTW_REAL tre0_7_4;
     FFTW_REAL tim0_7_4;
     FFTW_REAL tre0_7_5;
     FFTW_REAL tim0_7_5;
     FFTW_REAL tre0_7_6;
     FFTW_REAL tim0_7_6;
     FFTW_REAL tre0_7_7;
     FFTW_REAL tim0_7_7;
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_0_2;
	  FFTW_REAL tim1_0_2;
	  FFTW_REAL tre1_0_3;
	  FFTW_REAL tim1_0_3;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  FFTW_REAL tre1_1_2;
	  FFTW_REAL tim1_1_2;
	  FFTW_REAL tre1_1_3;
	  FFTW_REAL tim1_1_3;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[0]);
	       tim2_0_0 = c_im(in[0]);
	       tre2_1_0 = c_re(in[32 * istride]);
	       tim2_1_0 = c_im(in[32 * istride]);
	       tre1_0_0 = tre2_0_0 + tre2_1_0;
	       tim1_0_0 = tim2_0_0 + tim2_1_0;
	       tre1_1_0 = tre2_0_0 - tre2_1_0;
	       tim1_1_0 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[8 * istride]);
	       tim2_0_0 = c_im(in[8 * istride]);
	       tre2_1_0 = c_re(in[40 * istride]);
	       tim2_1_0 = c_im(in[40 * istride]);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[16 * istride]);
	       tim2_0_0 = c_im(in[16 * istride]);
	       tre2_1_0 = c_re(in[48 * istride]);
	       tim2_1_0 = c_im(in[48 * istride]);
	       tre1_0_2 = tre2_0_0 + tre2_1_0;
	       tim1_0_2 = tim2_0_0 + tim2_1_0;
	       tre1_1_2 = tre2_0_0 - tre2_1_0;
	       tim1_1_2 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[24 * istride]);
	       tim2_0_0 = c_im(in[24 * istride]);
	       tre2_1_0 = c_re(in[56 * istride]);
	       tim2_1_0 = c_im(in[56 * istride]);
	       tre1_0_3 = tre2_0_0 + tre2_1_0;
	       tim1_0_3 = tim2_0_0 + tim2_1_0;
	       tre1_1_3 = tre2_0_0 - tre2_1_0;
	       tim1_1_3 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_0_0 + tre1_0_2;
	       tim2_0_0 = tim1_0_0 + tim1_0_2;
	       tre2_1_0 = tre1_0_0 - tre1_0_2;
	       tim2_1_0 = tim1_0_0 - tim1_0_2;
	       tre2_0_1 = tre1_0_1 + tre1_0_3;
	       tim2_0_1 = tim1_0_1 + tim1_0_3;
	       tre2_1_1 = tre1_0_1 - tre1_0_3;
	       tim2_1_1 = tim1_0_1 - tim1_0_3;
	       tre0_0_0 = tre2_0_0 + tre2_0_1;
	       tim0_0_0 = tim2_0_0 + tim2_0_1;
	       tre0_4_0 = tre2_0_0 - tre2_0_1;
	       tim0_4_0 = tim2_0_0 - tim2_0_1;
	       tre0_2_0 = tre2_1_0 - tim2_1_1;
	       tim0_2_0 = tim2_1_0 + tre2_1_1;
	       tre0_6_0 = tre2_1_0 + tim2_1_1;
	       tim0_6_0 = tim2_1_0 - tre2_1_1;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_1_0 - tim1_1_2;
	       tim2_0_0 = tim1_1_0 + tre1_1_2;
	       tre2_1_0 = tre1_1_0 + tim1_1_2;
	       tim2_1_0 = tim1_1_0 - tre1_1_2;
	       {
		    FFTW_REAL tre3_0_0;
		    FFTW_REAL tim3_0_0;
		    FFTW_REAL tre3_1_0;
		    FFTW_REAL tim3_1_0;
		    tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 - tim1_1_1);
		    tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 + tre1_1_1);
		    tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 + tim1_1_3);
		    tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 - tim1_1_3);
		    tre2_0_1 = tre3_0_0 - tre3_1_0;
		    tim2_0_1 = tim3_0_0 + tim3_1_0;
		    tre2_1_1 = tre3_0_0 + tre3_1_0;
		    tim2_1_1 = tim3_0_0 - tim3_1_0;
	       }
	       tre0_1_0 = tre2_0_0 + tre2_0_1;
	       tim0_1_0 = tim2_0_0 + tim2_0_1;
	       tre0_5_0 = tre2_0_0 - tre2_0_1;
	       tim0_5_0 = tim2_0_0 - tim2_0_1;
	       tre0_3_0 = tre2_1_0 - tim2_1_1;
	       tim0_3_0 = tim2_1_0 + tre2_1_1;
	       tre0_7_0 = tre2_1_0 + tim2_1_1;
	       tim0_7_0 = tim2_1_0 - tre2_1_1;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_0_2;
	  FFTW_REAL tim1_0_2;
	  FFTW_REAL tre1_0_3;
	  FFTW_REAL tim1_0_3;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  FFTW_REAL tre1_1_2;
	  FFTW_REAL tim1_1_2;
	  FFTW_REAL tre1_1_3;
	  FFTW_REAL tim1_1_3;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[istride]);
	       tim2_0_0 = c_im(in[istride]);
	       tre2_1_0 = c_re(in[33 * istride]);
	       tim2_1_0 = c_im(in[33 * istride]);
	       tre1_0_0 = tre2_0_0 + tre2_1_0;
	       tim1_0_0 = tim2_0_0 + tim2_1_0;
	       tre1_1_0 = tre2_0_0 - tre2_1_0;
	       tim1_1_0 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[9 * istride]);
	       tim2_0_0 = c_im(in[9 * istride]);
	       tre2_1_0 = c_re(in[41 * istride]);
	       tim2_1_0 = c_im(in[41 * istride]);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[17 * istride]);
	       tim2_0_0 = c_im(in[17 * istride]);
	       tre2_1_0 = c_re(in[49 * istride]);
	       tim2_1_0 = c_im(in[49 * istride]);
	       tre1_0_2 = tre2_0_0 + tre2_1_0;
	       tim1_0_2 = tim2_0_0 + tim2_1_0;
	       tre1_1_2 = tre2_0_0 - tre2_1_0;
	       tim1_1_2 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[25 * istride]);
	       tim2_0_0 = c_im(in[25 * istride]);
	       tre2_1_0 = c_re(in[57 * istride]);
	       tim2_1_0 = c_im(in[57 * istride]);
	       tre1_0_3 = tre2_0_0 + tre2_1_0;
	       tim1_0_3 = tim2_0_0 + tim2_1_0;
	       tre1_1_3 = tre2_0_0 - tre2_1_0;
	       tim1_1_3 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_0_0 + tre1_0_2;
	       tim2_0_0 = tim1_0_0 + tim1_0_2;
	       tre2_1_0 = tre1_0_0 - tre1_0_2;
	       tim2_1_0 = tim1_0_0 - tim1_0_2;
	       tre2_0_1 = tre1_0_1 + tre1_0_3;
	       tim2_0_1 = tim1_0_1 + tim1_0_3;
	       tre2_1_1 = tre1_0_1 - tre1_0_3;
	       tim2_1_1 = tim1_0_1 - tim1_0_3;
	       tre0_0_1 = tre2_0_0 + tre2_0_1;
	       tim0_0_1 = tim2_0_0 + tim2_0_1;
	       tre0_4_1 = tre2_0_0 - tre2_0_1;
	       tim0_4_1 = tim2_0_0 - tim2_0_1;
	       tre0_2_1 = tre2_1_0 - tim2_1_1;
	       tim0_2_1 = tim2_1_0 + tre2_1_1;
	       tre0_6_1 = tre2_1_0 + tim2_1_1;
	       tim0_6_1 = tim2_1_0 - tre2_1_1;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_1_0 - tim1_1_2;
	       tim2_0_0 = tim1_1_0 + tre1_1_2;
	       tre2_1_0 = tre1_1_0 + tim1_1_2;
	       tim2_1_0 = tim1_1_0 - tre1_1_2;
	       {
		    FFTW_REAL tre3_0_0;
		    FFTW_REAL tim3_0_0;
		    FFTW_REAL tre3_1_0;
		    FFTW_REAL tim3_1_0;
		    tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 - tim1_1_1);
		    tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 + tre1_1_1);
		    tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 + tim1_1_3);
		    tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 - tim1_1_3);
		    tre2_0_1 = tre3_0_0 - tre3_1_0;
		    tim2_0_1 = tim3_0_0 + tim3_1_0;
		    tre2_1_1 = tre3_0_0 + tre3_1_0;
		    tim2_1_1 = tim3_0_0 - tim3_1_0;
	       }
	       tre0_1_1 = tre2_0_0 + tre2_0_1;
	       tim0_1_1 = tim2_0_0 + tim2_0_1;
	       tre0_5_1 = tre2_0_0 - tre2_0_1;
	       tim0_5_1 = tim2_0_0 - tim2_0_1;
	       tre0_3_1 = tre2_1_0 - tim2_1_1;
	       tim0_3_1 = tim2_1_0 + tre2_1_1;
	       tre0_7_1 = tre2_1_0 + tim2_1_1;
	       tim0_7_1 = tim2_1_0 - tre2_1_1;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_0_2;
	  FFTW_REAL tim1_0_2;
	  FFTW_REAL tre1_0_3;
	  FFTW_REAL tim1_0_3;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  FFTW_REAL tre1_1_2;
	  FFTW_REAL tim1_1_2;
	  FFTW_REAL tre1_1_3;
	  FFTW_REAL tim1_1_3;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[2 * istride]);
	       tim2_0_0 = c_im(in[2 * istride]);
	       tre2_1_0 = c_re(in[34 * istride]);
	       tim2_1_0 = c_im(in[34 * istride]);
	       tre1_0_0 = tre2_0_0 + tre2_1_0;
	       tim1_0_0 = tim2_0_0 + tim2_1_0;
	       tre1_1_0 = tre2_0_0 - tre2_1_0;
	       tim1_1_0 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[10 * istride]);
	       tim2_0_0 = c_im(in[10 * istride]);
	       tre2_1_0 = c_re(in[42 * istride]);
	       tim2_1_0 = c_im(in[42 * istride]);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[18 * istride]);
	       tim2_0_0 = c_im(in[18 * istride]);
	       tre2_1_0 = c_re(in[50 * istride]);
	       tim2_1_0 = c_im(in[50 * istride]);
	       tre1_0_2 = tre2_0_0 + tre2_1_0;
	       tim1_0_2 = tim2_0_0 + tim2_1_0;
	       tre1_1_2 = tre2_0_0 - tre2_1_0;
	       tim1_1_2 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[26 * istride]);
	       tim2_0_0 = c_im(in[26 * istride]);
	       tre2_1_0 = c_re(in[58 * istride]);
	       tim2_1_0 = c_im(in[58 * istride]);
	       tre1_0_3 = tre2_0_0 + tre2_1_0;
	       tim1_0_3 = tim2_0_0 + tim2_1_0;
	       tre1_1_3 = tre2_0_0 - tre2_1_0;
	       tim1_1_3 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_0_0 + tre1_0_2;
	       tim2_0_0 = tim1_0_0 + tim1_0_2;
	       tre2_1_0 = tre1_0_0 - tre1_0_2;
	       tim2_1_0 = tim1_0_0 - tim1_0_2;
	       tre2_0_1 = tre1_0_1 + tre1_0_3;
	       tim2_0_1 = tim1_0_1 + tim1_0_3;
	       tre2_1_1 = tre1_0_1 - tre1_0_3;
	       tim2_1_1 = tim1_0_1 - tim1_0_3;
	       tre0_0_2 = tre2_0_0 + tre2_0_1;
	       tim0_0_2 = tim2_0_0 + tim2_0_1;
	       tre0_4_2 = tre2_0_0 - tre2_0_1;
	       tim0_4_2 = tim2_0_0 - tim2_0_1;
	       tre0_2_2 = tre2_1_0 - tim2_1_1;
	       tim0_2_2 = tim2_1_0 + tre2_1_1;
	       tre0_6_2 = tre2_1_0 + tim2_1_1;
	       tim0_6_2 = tim2_1_0 - tre2_1_1;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_1_0 - tim1_1_2;
	       tim2_0_0 = tim1_1_0 + tre1_1_2;
	       tre2_1_0 = tre1_1_0 + tim1_1_2;
	       tim2_1_0 = tim1_1_0 - tre1_1_2;
	       {
		    FFTW_REAL tre3_0_0;
		    FFTW_REAL tim3_0_0;
		    FFTW_REAL tre3_1_0;
		    FFTW_REAL tim3_1_0;
		    tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 - tim1_1_1);
		    tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 + tre1_1_1);
		    tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 + tim1_1_3);
		    tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 - tim1_1_3);
		    tre2_0_1 = tre3_0_0 - tre3_1_0;
		    tim2_0_1 = tim3_0_0 + tim3_1_0;
		    tre2_1_1 = tre3_0_0 + tre3_1_0;
		    tim2_1_1 = tim3_0_0 - tim3_1_0;
	       }
	       tre0_1_2 = tre2_0_0 + tre2_0_1;
	       tim0_1_2 = tim2_0_0 + tim2_0_1;
	       tre0_5_2 = tre2_0_0 - tre2_0_1;
	       tim0_5_2 = tim2_0_0 - tim2_0_1;
	       tre0_3_2 = tre2_1_0 - tim2_1_1;
	       tim0_3_2 = tim2_1_0 + tre2_1_1;
	       tre0_7_2 = tre2_1_0 + tim2_1_1;
	       tim0_7_2 = tim2_1_0 - tre2_1_1;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_0_2;
	  FFTW_REAL tim1_0_2;
	  FFTW_REAL tre1_0_3;
	  FFTW_REAL tim1_0_3;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  FFTW_REAL tre1_1_2;
	  FFTW_REAL tim1_1_2;
	  FFTW_REAL tre1_1_3;
	  FFTW_REAL tim1_1_3;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[3 * istride]);
	       tim2_0_0 = c_im(in[3 * istride]);
	       tre2_1_0 = c_re(in[35 * istride]);
	       tim2_1_0 = c_im(in[35 * istride]);
	       tre1_0_0 = tre2_0_0 + tre2_1_0;
	       tim1_0_0 = tim2_0_0 + tim2_1_0;
	       tre1_1_0 = tre2_0_0 - tre2_1_0;
	       tim1_1_0 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[11 * istride]);
	       tim2_0_0 = c_im(in[11 * istride]);
	       tre2_1_0 = c_re(in[43 * istride]);
	       tim2_1_0 = c_im(in[43 * istride]);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[19 * istride]);
	       tim2_0_0 = c_im(in[19 * istride]);
	       tre2_1_0 = c_re(in[51 * istride]);
	       tim2_1_0 = c_im(in[51 * istride]);
	       tre1_0_2 = tre2_0_0 + tre2_1_0;
	       tim1_0_2 = tim2_0_0 + tim2_1_0;
	       tre1_1_2 = tre2_0_0 - tre2_1_0;
	       tim1_1_2 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[27 * istride]);
	       tim2_0_0 = c_im(in[27 * istride]);
	       tre2_1_0 = c_re(in[59 * istride]);
	       tim2_1_0 = c_im(in[59 * istride]);
	       tre1_0_3 = tre2_0_0 + tre2_1_0;
	       tim1_0_3 = tim2_0_0 + tim2_1_0;
	       tre1_1_3 = tre2_0_0 - tre2_1_0;
	       tim1_1_3 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_0_0 + tre1_0_2;
	       tim2_0_0 = tim1_0_0 + tim1_0_2;
	       tre2_1_0 = tre1_0_0 - tre1_0_2;
	       tim2_1_0 = tim1_0_0 - tim1_0_2;
	       tre2_0_1 = tre1_0_1 + tre1_0_3;
	       tim2_0_1 = tim1_0_1 + tim1_0_3;
	       tre2_1_1 = tre1_0_1 - tre1_0_3;
	       tim2_1_1 = tim1_0_1 - tim1_0_3;
	       tre0_0_3 = tre2_0_0 + tre2_0_1;
	       tim0_0_3 = tim2_0_0 + tim2_0_1;
	       tre0_4_3 = tre2_0_0 - tre2_0_1;
	       tim0_4_3 = tim2_0_0 - tim2_0_1;
	       tre0_2_3 = tre2_1_0 - tim2_1_1;
	       tim0_2_3 = tim2_1_0 + tre2_1_1;
	       tre0_6_3 = tre2_1_0 + tim2_1_1;
	       tim0_6_3 = tim2_1_0 - tre2_1_1;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_1_0 - tim1_1_2;
	       tim2_0_0 = tim1_1_0 + tre1_1_2;
	       tre2_1_0 = tre1_1_0 + tim1_1_2;
	       tim2_1_0 = tim1_1_0 - tre1_1_2;
	       {
		    FFTW_REAL tre3_0_0;
		    FFTW_REAL tim3_0_0;
		    FFTW_REAL tre3_1_0;
		    FFTW_REAL tim3_1_0;
		    tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 - tim1_1_1);
		    tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 + tre1_1_1);
		    tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 + tim1_1_3);
		    tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 - tim1_1_3);
		    tre2_0_1 = tre3_0_0 - tre3_1_0;
		    tim2_0_1 = tim3_0_0 + tim3_1_0;
		    tre2_1_1 = tre3_0_0 + tre3_1_0;
		    tim2_1_1 = tim3_0_0 - tim3_1_0;
	       }
	       tre0_1_3 = tre2_0_0 + tre2_0_1;
	       tim0_1_3 = tim2_0_0 + tim2_0_1;
	       tre0_5_3 = tre2_0_0 - tre2_0_1;
	       tim0_5_3 = tim2_0_0 - tim2_0_1;
	       tre0_3_3 = tre2_1_0 - tim2_1_1;
	       tim0_3_3 = tim2_1_0 + tre2_1_1;
	       tre0_7_3 = tre2_1_0 + tim2_1_1;
	       tim0_7_3 = tim2_1_0 - tre2_1_1;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_0_2;
	  FFTW_REAL tim1_0_2;
	  FFTW_REAL tre1_0_3;
	  FFTW_REAL tim1_0_3;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  FFTW_REAL tre1_1_2;
	  FFTW_REAL tim1_1_2;
	  FFTW_REAL tre1_1_3;
	  FFTW_REAL tim1_1_3;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[4 * istride]);
	       tim2_0_0 = c_im(in[4 * istride]);
	       tre2_1_0 = c_re(in[36 * istride]);
	       tim2_1_0 = c_im(in[36 * istride]);
	       tre1_0_0 = tre2_0_0 + tre2_1_0;
	       tim1_0_0 = tim2_0_0 + tim2_1_0;
	       tre1_1_0 = tre2_0_0 - tre2_1_0;
	       tim1_1_0 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[12 * istride]);
	       tim2_0_0 = c_im(in[12 * istride]);
	       tre2_1_0 = c_re(in[44 * istride]);
	       tim2_1_0 = c_im(in[44 * istride]);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[20 * istride]);
	       tim2_0_0 = c_im(in[20 * istride]);
	       tre2_1_0 = c_re(in[52 * istride]);
	       tim2_1_0 = c_im(in[52 * istride]);
	       tre1_0_2 = tre2_0_0 + tre2_1_0;
	       tim1_0_2 = tim2_0_0 + tim2_1_0;
	       tre1_1_2 = tre2_0_0 - tre2_1_0;
	       tim1_1_2 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[28 * istride]);
	       tim2_0_0 = c_im(in[28 * istride]);
	       tre2_1_0 = c_re(in[60 * istride]);
	       tim2_1_0 = c_im(in[60 * istride]);
	       tre1_0_3 = tre2_0_0 + tre2_1_0;
	       tim1_0_3 = tim2_0_0 + tim2_1_0;
	       tre1_1_3 = tre2_0_0 - tre2_1_0;
	       tim1_1_3 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_0_0 + tre1_0_2;
	       tim2_0_0 = tim1_0_0 + tim1_0_2;
	       tre2_1_0 = tre1_0_0 - tre1_0_2;
	       tim2_1_0 = tim1_0_0 - tim1_0_2;
	       tre2_0_1 = tre1_0_1 + tre1_0_3;
	       tim2_0_1 = tim1_0_1 + tim1_0_3;
	       tre2_1_1 = tre1_0_1 - tre1_0_3;
	       tim2_1_1 = tim1_0_1 - tim1_0_3;
	       tre0_0_4 = tre2_0_0 + tre2_0_1;
	       tim0_0_4 = tim2_0_0 + tim2_0_1;
	       tre0_4_4 = tre2_0_0 - tre2_0_1;
	       tim0_4_4 = tim2_0_0 - tim2_0_1;
	       tre0_2_4 = tre2_1_0 - tim2_1_1;
	       tim0_2_4 = tim2_1_0 + tre2_1_1;
	       tre0_6_4 = tre2_1_0 + tim2_1_1;
	       tim0_6_4 = tim2_1_0 - tre2_1_1;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_1_0 - tim1_1_2;
	       tim2_0_0 = tim1_1_0 + tre1_1_2;
	       tre2_1_0 = tre1_1_0 + tim1_1_2;
	       tim2_1_0 = tim1_1_0 - tre1_1_2;
	       {
		    FFTW_REAL tre3_0_0;
		    FFTW_REAL tim3_0_0;
		    FFTW_REAL tre3_1_0;
		    FFTW_REAL tim3_1_0;
		    tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 - tim1_1_1);
		    tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 + tre1_1_1);
		    tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 + tim1_1_3);
		    tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 - tim1_1_3);
		    tre2_0_1 = tre3_0_0 - tre3_1_0;
		    tim2_0_1 = tim3_0_0 + tim3_1_0;
		    tre2_1_1 = tre3_0_0 + tre3_1_0;
		    tim2_1_1 = tim3_0_0 - tim3_1_0;
	       }
	       tre0_1_4 = tre2_0_0 + tre2_0_1;
	       tim0_1_4 = tim2_0_0 + tim2_0_1;
	       tre0_5_4 = tre2_0_0 - tre2_0_1;
	       tim0_5_4 = tim2_0_0 - tim2_0_1;
	       tre0_3_4 = tre2_1_0 - tim2_1_1;
	       tim0_3_4 = tim2_1_0 + tre2_1_1;
	       tre0_7_4 = tre2_1_0 + tim2_1_1;
	       tim0_7_4 = tim2_1_0 - tre2_1_1;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_0_2;
	  FFTW_REAL tim1_0_2;
	  FFTW_REAL tre1_0_3;
	  FFTW_REAL tim1_0_3;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  FFTW_REAL tre1_1_2;
	  FFTW_REAL tim1_1_2;
	  FFTW_REAL tre1_1_3;
	  FFTW_REAL tim1_1_3;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[5 * istride]);
	       tim2_0_0 = c_im(in[5 * istride]);
	       tre2_1_0 = c_re(in[37 * istride]);
	       tim2_1_0 = c_im(in[37 * istride]);
	       tre1_0_0 = tre2_0_0 + tre2_1_0;
	       tim1_0_0 = tim2_0_0 + tim2_1_0;
	       tre1_1_0 = tre2_0_0 - tre2_1_0;
	       tim1_1_0 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[13 * istride]);
	       tim2_0_0 = c_im(in[13 * istride]);
	       tre2_1_0 = c_re(in[45 * istride]);
	       tim2_1_0 = c_im(in[45 * istride]);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[21 * istride]);
	       tim2_0_0 = c_im(in[21 * istride]);
	       tre2_1_0 = c_re(in[53 * istride]);
	       tim2_1_0 = c_im(in[53 * istride]);
	       tre1_0_2 = tre2_0_0 + tre2_1_0;
	       tim1_0_2 = tim2_0_0 + tim2_1_0;
	       tre1_1_2 = tre2_0_0 - tre2_1_0;
	       tim1_1_2 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[29 * istride]);
	       tim2_0_0 = c_im(in[29 * istride]);
	       tre2_1_0 = c_re(in[61 * istride]);
	       tim2_1_0 = c_im(in[61 * istride]);
	       tre1_0_3 = tre2_0_0 + tre2_1_0;
	       tim1_0_3 = tim2_0_0 + tim2_1_0;
	       tre1_1_3 = tre2_0_0 - tre2_1_0;
	       tim1_1_3 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_0_0 + tre1_0_2;
	       tim2_0_0 = tim1_0_0 + tim1_0_2;
	       tre2_1_0 = tre1_0_0 - tre1_0_2;
	       tim2_1_0 = tim1_0_0 - tim1_0_2;
	       tre2_0_1 = tre1_0_1 + tre1_0_3;
	       tim2_0_1 = tim1_0_1 + tim1_0_3;
	       tre2_1_1 = tre1_0_1 - tre1_0_3;
	       tim2_1_1 = tim1_0_1 - tim1_0_3;
	       tre0_0_5 = tre2_0_0 + tre2_0_1;
	       tim0_0_5 = tim2_0_0 + tim2_0_1;
	       tre0_4_5 = tre2_0_0 - tre2_0_1;
	       tim0_4_5 = tim2_0_0 - tim2_0_1;
	       tre0_2_5 = tre2_1_0 - tim2_1_1;
	       tim0_2_5 = tim2_1_0 + tre2_1_1;
	       tre0_6_5 = tre2_1_0 + tim2_1_1;
	       tim0_6_5 = tim2_1_0 - tre2_1_1;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_1_0 - tim1_1_2;
	       tim2_0_0 = tim1_1_0 + tre1_1_2;
	       tre2_1_0 = tre1_1_0 + tim1_1_2;
	       tim2_1_0 = tim1_1_0 - tre1_1_2;
	       {
		    FFTW_REAL tre3_0_0;
		    FFTW_REAL tim3_0_0;
		    FFTW_REAL tre3_1_0;
		    FFTW_REAL tim3_1_0;
		    tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 - tim1_1_1);
		    tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 + tre1_1_1);
		    tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 + tim1_1_3);
		    tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 - tim1_1_3);
		    tre2_0_1 = tre3_0_0 - tre3_1_0;
		    tim2_0_1 = tim3_0_0 + tim3_1_0;
		    tre2_1_1 = tre3_0_0 + tre3_1_0;
		    tim2_1_1 = tim3_0_0 - tim3_1_0;
	       }
	       tre0_1_5 = tre2_0_0 + tre2_0_1;
	       tim0_1_5 = tim2_0_0 + tim2_0_1;
	       tre0_5_5 = tre2_0_0 - tre2_0_1;
	       tim0_5_5 = tim2_0_0 - tim2_0_1;
	       tre0_3_5 = tre2_1_0 - tim2_1_1;
	       tim0_3_5 = tim2_1_0 + tre2_1_1;
	       tre0_7_5 = tre2_1_0 + tim2_1_1;
	       tim0_7_5 = tim2_1_0 - tre2_1_1;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_0_2;
	  FFTW_REAL tim1_0_2;
	  FFTW_REAL tre1_0_3;
	  FFTW_REAL tim1_0_3;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  FFTW_REAL tre1_1_2;
	  FFTW_REAL tim1_1_2;
	  FFTW_REAL tre1_1_3;
	  FFTW_REAL tim1_1_3;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[6 * istride]);
	       tim2_0_0 = c_im(in[6 * istride]);
	       tre2_1_0 = c_re(in[38 * istride]);
	       tim2_1_0 = c_im(in[38 * istride]);
	       tre1_0_0 = tre2_0_0 + tre2_1_0;
	       tim1_0_0 = tim2_0_0 + tim2_1_0;
	       tre1_1_0 = tre2_0_0 - tre2_1_0;
	       tim1_1_0 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[14 * istride]);
	       tim2_0_0 = c_im(in[14 * istride]);
	       tre2_1_0 = c_re(in[46 * istride]);
	       tim2_1_0 = c_im(in[46 * istride]);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[22 * istride]);
	       tim2_0_0 = c_im(in[22 * istride]);
	       tre2_1_0 = c_re(in[54 * istride]);
	       tim2_1_0 = c_im(in[54 * istride]);
	       tre1_0_2 = tre2_0_0 + tre2_1_0;
	       tim1_0_2 = tim2_0_0 + tim2_1_0;
	       tre1_1_2 = tre2_0_0 - tre2_1_0;
	       tim1_1_2 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[30 * istride]);
	       tim2_0_0 = c_im(in[30 * istride]);
	       tre2_1_0 = c_re(in[62 * istride]);
	       tim2_1_0 = c_im(in[62 * istride]);
	       tre1_0_3 = tre2_0_0 + tre2_1_0;
	       tim1_0_3 = tim2_0_0 + tim2_1_0;
	       tre1_1_3 = tre2_0_0 - tre2_1_0;
	       tim1_1_3 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_0_0 + tre1_0_2;
	       tim2_0_0 = tim1_0_0 + tim1_0_2;
	       tre2_1_0 = tre1_0_0 - tre1_0_2;
	       tim2_1_0 = tim1_0_0 - tim1_0_2;
	       tre2_0_1 = tre1_0_1 + tre1_0_3;
	       tim2_0_1 = tim1_0_1 + tim1_0_3;
	       tre2_1_1 = tre1_0_1 - tre1_0_3;
	       tim2_1_1 = tim1_0_1 - tim1_0_3;
	       tre0_0_6 = tre2_0_0 + tre2_0_1;
	       tim0_0_6 = tim2_0_0 + tim2_0_1;
	       tre0_4_6 = tre2_0_0 - tre2_0_1;
	       tim0_4_6 = tim2_0_0 - tim2_0_1;
	       tre0_2_6 = tre2_1_0 - tim2_1_1;
	       tim0_2_6 = tim2_1_0 + tre2_1_1;
	       tre0_6_6 = tre2_1_0 + tim2_1_1;
	       tim0_6_6 = tim2_1_0 - tre2_1_1;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_1_0 - tim1_1_2;
	       tim2_0_0 = tim1_1_0 + tre1_1_2;
	       tre2_1_0 = tre1_1_0 + tim1_1_2;
	       tim2_1_0 = tim1_1_0 - tre1_1_2;
	       {
		    FFTW_REAL tre3_0_0;
		    FFTW_REAL tim3_0_0;
		    FFTW_REAL tre3_1_0;
		    FFTW_REAL tim3_1_0;
		    tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 - tim1_1_1);
		    tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 + tre1_1_1);
		    tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 + tim1_1_3);
		    tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 - tim1_1_3);
		    tre2_0_1 = tre3_0_0 - tre3_1_0;
		    tim2_0_1 = tim3_0_0 + tim3_1_0;
		    tre2_1_1 = tre3_0_0 + tre3_1_0;
		    tim2_1_1 = tim3_0_0 - tim3_1_0;
	       }
	       tre0_1_6 = tre2_0_0 + tre2_0_1;
	       tim0_1_6 = tim2_0_0 + tim2_0_1;
	       tre0_5_6 = tre2_0_0 - tre2_0_1;
	       tim0_5_6 = tim2_0_0 - tim2_0_1;
	       tre0_3_6 = tre2_1_0 - tim2_1_1;
	       tim0_3_6 = tim2_1_0 + tre2_1_1;
	       tre0_7_6 = tre2_1_0 + tim2_1_1;
	       tim0_7_6 = tim2_1_0 - tre2_1_1;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_0_2;
	  FFTW_REAL tim1_0_2;
	  FFTW_REAL tre1_0_3;
	  FFTW_REAL tim1_0_3;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  FFTW_REAL tre1_1_2;
	  FFTW_REAL tim1_1_2;
	  FFTW_REAL tre1_1_3;
	  FFTW_REAL tim1_1_3;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[7 * istride]);
	       tim2_0_0 = c_im(in[7 * istride]);
	       tre2_1_0 = c_re(in[39 * istride]);
	       tim2_1_0 = c_im(in[39 * istride]);
	       tre1_0_0 = tre2_0_0 + tre2_1_0;
	       tim1_0_0 = tim2_0_0 + tim2_1_0;
	       tre1_1_0 = tre2_0_0 - tre2_1_0;
	       tim1_1_0 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[15 * istride]);
	       tim2_0_0 = c_im(in[15 * istride]);
	       tre2_1_0 = c_re(in[47 * istride]);
	       tim2_1_0 = c_im(in[47 * istride]);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[23 * istride]);
	       tim2_0_0 = c_im(in[23 * istride]);
	       tre2_1_0 = c_re(in[55 * istride]);
	       tim2_1_0 = c_im(in[55 * istride]);
	       tre1_0_2 = tre2_0_0 + tre2_1_0;
	       tim1_0_2 = tim2_0_0 + tim2_1_0;
	       tre1_1_2 = tre2_0_0 - tre2_1_0;
	       tim1_1_2 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = c_re(in[31 * istride]);
	       tim2_0_0 = c_im(in[31 * istride]);
	       tre2_1_0 = c_re(in[63 * istride]);
	       tim2_1_0 = c_im(in[63 * istride]);
	       tre1_0_3 = tre2_0_0 + tre2_1_0;
	       tim1_0_3 = tim2_0_0 + tim2_1_0;
	       tre1_1_3 = tre2_0_0 - tre2_1_0;
	       tim1_1_3 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_0_0 + tre1_0_2;
	       tim2_0_0 = tim1_0_0 + tim1_0_2;
	       tre2_1_0 = tre1_0_0 - tre1_0_2;
	       tim2_1_0 = tim1_0_0 - tim1_0_2;
	       tre2_0_1 = tre1_0_1 + tre1_0_3;
	       tim2_0_1 = tim1_0_1 + tim1_0_3;
	       tre2_1_1 = tre1_0_1 - tre1_0_3;
	       tim2_1_1 = tim1_0_1 - tim1_0_3;
	       tre0_0_7 = tre2_0_0 + tre2_0_1;
	       tim0_0_7 = tim2_0_0 + tim2_0_1;
	       tre0_4_7 = tre2_0_0 - tre2_0_1;
	       tim0_4_7 = tim2_0_0 - tim2_0_1;
	       tre0_2_7 = tre2_1_0 - tim2_1_1;
	       tim0_2_7 = tim2_1_0 + tre2_1_1;
	       tre0_6_7 = tre2_1_0 + tim2_1_1;
	       tim0_6_7 = tim2_1_0 - tre2_1_1;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_1_0 - tim1_1_2;
	       tim2_0_0 = tim1_1_0 + tre1_1_2;
	       tre2_1_0 = tre1_1_0 + tim1_1_2;
	       tim2_1_0 = tim1_1_0 - tre1_1_2;
	       {
		    FFTW_REAL tre3_0_0;
		    FFTW_REAL tim3_0_0;
		    FFTW_REAL tre3_1_0;
		    FFTW_REAL tim3_1_0;
		    tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 - tim1_1_1);
		    tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 + tre1_1_1);
		    tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 + tim1_1_3);
		    tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 - tim1_1_3);
		    tre2_0_1 = tre3_0_0 - tre3_1_0;
		    tim2_0_1 = tim3_0_0 + tim3_1_0;
		    tre2_1_1 = tre3_0_0 + tre3_1_0;
		    tim2_1_1 = tim3_0_0 - tim3_1_0;
	       }
	       tre0_1_7 = tre2_0_0 + tre2_0_1;
	       tim0_1_7 = tim2_0_0 + tim2_0_1;
	       tre0_5_7 = tre2_0_0 - tre2_0_1;
	       tim0_5_7 = tim2_0_0 - tim2_0_1;
	       tre0_3_7 = tre2_1_0 - tim2_1_1;
	       tim0_3_7 = tim2_1_0 + tre2_1_1;
	       tre0_7_7 = tre2_1_0 + tim2_1_1;
	       tim0_7_7 = tim2_1_0 - tre2_1_1;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_0_2;
	  FFTW_REAL tim1_0_2;
	  FFTW_REAL tre1_0_3;
	  FFTW_REAL tim1_0_3;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  FFTW_REAL tre1_1_2;
	  FFTW_REAL tim1_1_2;
	  FFTW_REAL tre1_1_3;
	  FFTW_REAL tim1_1_3;
	  tre1_0_0 = tre0_0_0 + tre0_0_4;
	  tim1_0_0 = tim0_0_0 + tim0_0_4;
	  tre1_1_0 = tre0_0_0 - tre0_0_4;
	  tim1_1_0 = tim0_0_0 - tim0_0_4;
	  tre1_0_1 = tre0_0_1 + tre0_0_5;
	  tim1_0_1 = tim0_0_1 + tim0_0_5;
	  tre1_1_1 = tre0_0_1 - tre0_0_5;
	  tim1_1_1 = tim0_0_1 - tim0_0_5;
	  tre1_0_2 = tre0_0_2 + tre0_0_6;
	  tim1_0_2 = tim0_0_2 + tim0_0_6;
	  tre1_1_2 = tre0_0_2 - tre0_0_6;
	  tim1_1_2 = tim0_0_2 - tim0_0_6;
	  tre1_0_3 = tre0_0_3 + tre0_0_7;
	  tim1_0_3 = tim0_0_3 + tim0_0_7;
	  tre1_1_3 = tre0_0_3 - tre0_0_7;
	  tim1_1_3 = tim0_0_3 - tim0_0_7;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_0_0 + tre1_0_2;
	       tim2_0_0 = tim1_0_0 + tim1_0_2;
	       tre2_1_0 = tre1_0_0 - tre1_0_2;
	       tim2_1_0 = tim1_0_0 - tim1_0_2;
	       tre2_0_1 = tre1_0_1 + tre1_0_3;
	       tim2_0_1 = tim1_0_1 + tim1_0_3;
	       tre2_1_1 = tre1_0_1 - tre1_0_3;
	       tim2_1_1 = tim1_0_1 - tim1_0_3;
	       c_re(out[0]) = tre2_0_0 + tre2_0_1;
	       c_im(out[0]) = tim2_0_0 + tim2_0_1;
	       c_re(out[32 * ostride]) = tre2_0_0 - tre2_0_1;
	       c_im(out[32 * ostride]) = tim2_0_0 - tim2_0_1;
	       c_re(out[16 * ostride]) = tre2_1_0 - tim2_1_1;
	       c_im(out[16 * ostride]) = tim2_1_0 + tre2_1_1;
	       c_re(out[48 * ostride]) = tre2_1_0 + tim2_1_1;
	       c_im(out[48 * ostride]) = tim2_1_0 - tre2_1_1;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_1_0 - tim1_1_2;
	       tim2_0_0 = tim1_1_0 + tre1_1_2;
	       tre2_1_0 = tre1_1_0 + tim1_1_2;
	       tim2_1_0 = tim1_1_0 - tre1_1_2;
	       {
		    FFTW_REAL tre3_0_0;
		    FFTW_REAL tim3_0_0;
		    FFTW_REAL tre3_1_0;
		    FFTW_REAL tim3_1_0;
		    tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 - tim1_1_1);
		    tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 + tre1_1_1);
		    tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 + tim1_1_3);
		    tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 - tim1_1_3);
		    tre2_0_1 = tre3_0_0 - tre3_1_0;
		    tim2_0_1 = tim3_0_0 + tim3_1_0;
		    tre2_1_1 = tre3_0_0 + tre3_1_0;
		    tim2_1_1 = tim3_0_0 - tim3_1_0;
	       }
	       c_re(out[8 * ostride]) = tre2_0_0 + tre2_0_1;
	       c_im(out[8 * ostride]) = tim2_0_0 + tim2_0_1;
	       c_re(out[40 * ostride]) = tre2_0_0 - tre2_0_1;
	       c_im(out[40 * ostride]) = tim2_0_0 - tim2_0_1;
	       c_re(out[24 * ostride]) = tre2_1_0 - tim2_1_1;
	       c_im(out[24 * ostride]) = tim2_1_0 + tre2_1_1;
	       c_re(out[56 * ostride]) = tre2_1_0 + tim2_1_1;
	       c_im(out[56 * ostride]) = tim2_1_0 - tre2_1_1;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_0_2;
	  FFTW_REAL tim1_0_2;
	  FFTW_REAL tre1_0_3;
	  FFTW_REAL tim1_0_3;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  FFTW_REAL tre1_1_2;
	  FFTW_REAL tim1_1_2;
	  FFTW_REAL tre1_1_3;
	  FFTW_REAL tim1_1_3;
	  {
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_1_0 = (((FFTW_REAL) FFTW_K923879532) * tre0_1_4) - (((FFTW_REAL) FFTW_K382683432) * tim0_1_4);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K923879532) * tim0_1_4) + (((FFTW_REAL) FFTW_K382683432) * tre0_1_4);
	       tre1_0_0 = tre0_1_0 + tre2_1_0;
	       tim1_0_0 = tim0_1_0 + tim2_1_0;
	       tre1_1_0 = tre0_1_0 - tre2_1_0;
	       tim1_1_0 = tim0_1_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K995184726) * tre0_1_1) - (((FFTW_REAL) FFTW_K098017140) * tim0_1_1);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K995184726) * tim0_1_1) + (((FFTW_REAL) FFTW_K098017140) * tre0_1_1);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K881921264) * tre0_1_5) - (((FFTW_REAL) FFTW_K471396736) * tim0_1_5);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K881921264) * tim0_1_5) + (((FFTW_REAL) FFTW_K471396736) * tre0_1_5);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K980785280) * tre0_1_2) - (((FFTW_REAL) FFTW_K195090322) * tim0_1_2);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K980785280) * tim0_1_2) + (((FFTW_REAL) FFTW_K195090322) * tre0_1_2);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K831469612) * tre0_1_6) - (((FFTW_REAL) FFTW_K555570233) * tim0_1_6);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K831469612) * tim0_1_6) + (((FFTW_REAL) FFTW_K555570233) * tre0_1_6);
	       tre1_0_2 = tre2_0_0 + tre2_1_0;
	       tim1_0_2 = tim2_0_0 + tim2_1_0;
	       tre1_1_2 = tre2_0_0 - tre2_1_0;
	       tim1_1_2 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K956940335) * tre0_1_3) - (((FFTW_REAL) FFTW_K290284677) * tim0_1_3);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K956940335) * tim0_1_3) + (((FFTW_REAL) FFTW_K290284677) * tre0_1_3);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K773010453) * tre0_1_7) - (((FFTW_REAL) FFTW_K634393284) * tim0_1_7);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K773010453) * tim0_1_7) + (((FFTW_REAL) FFTW_K634393284) * tre0_1_7);
	       tre1_0_3 = tre2_0_0 + tre2_1_0;
	       tim1_0_3 = tim2_0_0 + tim2_1_0;
	       tre1_1_3 = tre2_0_0 - tre2_1_0;
	       tim1_1_3 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_0_0 + tre1_0_2;
	       tim2_0_0 = tim1_0_0 + tim1_0_2;
	       tre2_1_0 = tre1_0_0 - tre1_0_2;
	       tim2_1_0 = tim1_0_0 - tim1_0_2;
	       tre2_0_1 = tre1_0_1 + tre1_0_3;
	       tim2_0_1 = tim1_0_1 + tim1_0_3;
	       tre2_1_1 = tre1_0_1 - tre1_0_3;
	       tim2_1_1 = tim1_0_1 - tim1_0_3;
	       c_re(out[ostride]) = tre2_0_0 + tre2_0_1;
	       c_im(out[ostride]) = tim2_0_0 + tim2_0_1;
	       c_re(out[33 * ostride]) = tre2_0_0 - tre2_0_1;
	       c_im(out[33 * ostride]) = tim2_0_0 - tim2_0_1;
	       c_re(out[17 * ostride]) = tre2_1_0 - tim2_1_1;
	       c_im(out[17 * ostride]) = tim2_1_0 + tre2_1_1;
	       c_re(out[49 * ostride]) = tre2_1_0 + tim2_1_1;
	       c_im(out[49 * ostride]) = tim2_1_0 - tre2_1_1;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_1_0 - tim1_1_2;
	       tim2_0_0 = tim1_1_0 + tre1_1_2;
	       tre2_1_0 = tre1_1_0 + tim1_1_2;
	       tim2_1_0 = tim1_1_0 - tre1_1_2;
	       {
		    FFTW_REAL tre3_0_0;
		    FFTW_REAL tim3_0_0;
		    FFTW_REAL tre3_1_0;
		    FFTW_REAL tim3_1_0;
		    tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 - tim1_1_1);
		    tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 + tre1_1_1);
		    tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 + tim1_1_3);
		    tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 - tim1_1_3);
		    tre2_0_1 = tre3_0_0 - tre3_1_0;
		    tim2_0_1 = tim3_0_0 + tim3_1_0;
		    tre2_1_1 = tre3_0_0 + tre3_1_0;
		    tim2_1_1 = tim3_0_0 - tim3_1_0;
	       }
	       c_re(out[9 * ostride]) = tre2_0_0 + tre2_0_1;
	       c_im(out[9 * ostride]) = tim2_0_0 + tim2_0_1;
	       c_re(out[41 * ostride]) = tre2_0_0 - tre2_0_1;
	       c_im(out[41 * ostride]) = tim2_0_0 - tim2_0_1;
	       c_re(out[25 * ostride]) = tre2_1_0 - tim2_1_1;
	       c_im(out[25 * ostride]) = tim2_1_0 + tre2_1_1;
	       c_re(out[57 * ostride]) = tre2_1_0 + tim2_1_1;
	       c_im(out[57 * ostride]) = tim2_1_0 - tre2_1_1;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_0_2;
	  FFTW_REAL tim1_0_2;
	  FFTW_REAL tre1_0_3;
	  FFTW_REAL tim1_0_3;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  FFTW_REAL tre1_1_2;
	  FFTW_REAL tim1_1_2;
	  FFTW_REAL tre1_1_3;
	  FFTW_REAL tim1_1_3;
	  {
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_2_4 - tim0_2_4);
	       tim2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_2_4 + tre0_2_4);
	       tre1_0_0 = tre0_2_0 + tre2_1_0;
	       tim1_0_0 = tim0_2_0 + tim2_1_0;
	       tre1_1_0 = tre0_2_0 - tre2_1_0;
	       tim1_1_0 = tim0_2_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K980785280) * tre0_2_1) - (((FFTW_REAL) FFTW_K195090322) * tim0_2_1);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K980785280) * tim0_2_1) + (((FFTW_REAL) FFTW_K195090322) * tre0_2_1);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K555570233) * tre0_2_5) - (((FFTW_REAL) FFTW_K831469612) * tim0_2_5);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K555570233) * tim0_2_5) + (((FFTW_REAL) FFTW_K831469612) * tre0_2_5);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K923879532) * tre0_2_2) - (((FFTW_REAL) FFTW_K382683432) * tim0_2_2);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K923879532) * tim0_2_2) + (((FFTW_REAL) FFTW_K382683432) * tre0_2_2);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tre0_2_6) - (((FFTW_REAL) FFTW_K923879532) * tim0_2_6);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tim0_2_6) + (((FFTW_REAL) FFTW_K923879532) * tre0_2_6);
	       tre1_0_2 = tre2_0_0 + tre2_1_0;
	       tim1_0_2 = tim2_0_0 + tim2_1_0;
	       tre1_1_2 = tre2_0_0 - tre2_1_0;
	       tim1_1_2 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K831469612) * tre0_2_3) - (((FFTW_REAL) FFTW_K555570233) * tim0_2_3);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K831469612) * tim0_2_3) + (((FFTW_REAL) FFTW_K555570233) * tre0_2_3);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K195090322) * tre0_2_7) - (((FFTW_REAL) FFTW_K980785280) * tim0_2_7);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K195090322) * tim0_2_7) + (((FFTW_REAL) FFTW_K980785280) * tre0_2_7);
	       tre1_0_3 = tre2_0_0 + tre2_1_0;
	       tim1_0_3 = tim2_0_0 + tim2_1_0;
	       tre1_1_3 = tre2_0_0 - tre2_1_0;
	       tim1_1_3 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_0_0 + tre1_0_2;
	       tim2_0_0 = tim1_0_0 + tim1_0_2;
	       tre2_1_0 = tre1_0_0 - tre1_0_2;
	       tim2_1_0 = tim1_0_0 - tim1_0_2;
	       tre2_0_1 = tre1_0_1 + tre1_0_3;
	       tim2_0_1 = tim1_0_1 + tim1_0_3;
	       tre2_1_1 = tre1_0_1 - tre1_0_3;
	       tim2_1_1 = tim1_0_1 - tim1_0_3;
	       c_re(out[2 * ostride]) = tre2_0_0 + tre2_0_1;
	       c_im(out[2 * ostride]) = tim2_0_0 + tim2_0_1;
	       c_re(out[34 * ostride]) = tre2_0_0 - tre2_0_1;
	       c_im(out[34 * ostride]) = tim2_0_0 - tim2_0_1;
	       c_re(out[18 * ostride]) = tre2_1_0 - tim2_1_1;
	       c_im(out[18 * ostride]) = tim2_1_0 + tre2_1_1;
	       c_re(out[50 * ostride]) = tre2_1_0 + tim2_1_1;
	       c_im(out[50 * ostride]) = tim2_1_0 - tre2_1_1;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_1_0 - tim1_1_2;
	       tim2_0_0 = tim1_1_0 + tre1_1_2;
	       tre2_1_0 = tre1_1_0 + tim1_1_2;
	       tim2_1_0 = tim1_1_0 - tre1_1_2;
	       {
		    FFTW_REAL tre3_0_0;
		    FFTW_REAL tim3_0_0;
		    FFTW_REAL tre3_1_0;
		    FFTW_REAL tim3_1_0;
		    tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 - tim1_1_1);
		    tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 + tre1_1_1);
		    tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 + tim1_1_3);
		    tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 - tim1_1_3);
		    tre2_0_1 = tre3_0_0 - tre3_1_0;
		    tim2_0_1 = tim3_0_0 + tim3_1_0;
		    tre2_1_1 = tre3_0_0 + tre3_1_0;
		    tim2_1_1 = tim3_0_0 - tim3_1_0;
	       }
	       c_re(out[10 * ostride]) = tre2_0_0 + tre2_0_1;
	       c_im(out[10 * ostride]) = tim2_0_0 + tim2_0_1;
	       c_re(out[42 * ostride]) = tre2_0_0 - tre2_0_1;
	       c_im(out[42 * ostride]) = tim2_0_0 - tim2_0_1;
	       c_re(out[26 * ostride]) = tre2_1_0 - tim2_1_1;
	       c_im(out[26 * ostride]) = tim2_1_0 + tre2_1_1;
	       c_re(out[58 * ostride]) = tre2_1_0 + tim2_1_1;
	       c_im(out[58 * ostride]) = tim2_1_0 - tre2_1_1;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_0_2;
	  FFTW_REAL tim1_0_2;
	  FFTW_REAL tre1_0_3;
	  FFTW_REAL tim1_0_3;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  FFTW_REAL tre1_1_2;
	  FFTW_REAL tim1_1_2;
	  FFTW_REAL tre1_1_3;
	  FFTW_REAL tim1_1_3;
	  {
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tre0_3_4) - (((FFTW_REAL) FFTW_K923879532) * tim0_3_4);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tim0_3_4) + (((FFTW_REAL) FFTW_K923879532) * tre0_3_4);
	       tre1_0_0 = tre0_3_0 + tre2_1_0;
	       tim1_0_0 = tim0_3_0 + tim2_1_0;
	       tre1_1_0 = tre0_3_0 - tre2_1_0;
	       tim1_1_0 = tim0_3_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K956940335) * tre0_3_1) - (((FFTW_REAL) FFTW_K290284677) * tim0_3_1);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K956940335) * tim0_3_1) + (((FFTW_REAL) FFTW_K290284677) * tre0_3_1);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K098017140) * tre0_3_5) - (((FFTW_REAL) FFTW_K995184726) * tim0_3_5);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K098017140) * tim0_3_5) + (((FFTW_REAL) FFTW_K995184726) * tre0_3_5);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K831469612) * tre0_3_2) - (((FFTW_REAL) FFTW_K555570233) * tim0_3_2);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K831469612) * tim0_3_2) + (((FFTW_REAL) FFTW_K555570233) * tre0_3_2);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K195090322) * tre0_3_6) + (((FFTW_REAL) FFTW_K980785280) * tim0_3_6);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K980785280) * tre0_3_6) - (((FFTW_REAL) FFTW_K195090322) * tim0_3_6);
	       tre1_0_2 = tre2_0_0 - tre2_1_0;
	       tim1_0_2 = tim2_0_0 + tim2_1_0;
	       tre1_1_2 = tre2_0_0 + tre2_1_0;
	       tim1_1_2 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K634393284) * tre0_3_3) - (((FFTW_REAL) FFTW_K773010453) * tim0_3_3);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K634393284) * tim0_3_3) + (((FFTW_REAL) FFTW_K773010453) * tre0_3_3);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K471396736) * tre0_3_7) + (((FFTW_REAL) FFTW_K881921264) * tim0_3_7);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K881921264) * tre0_3_7) - (((FFTW_REAL) FFTW_K471396736) * tim0_3_7);
	       tre1_0_3 = tre2_0_0 - tre2_1_0;
	       tim1_0_3 = tim2_0_0 + tim2_1_0;
	       tre1_1_3 = tre2_0_0 + tre2_1_0;
	       tim1_1_3 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_0_0 + tre1_0_2;
	       tim2_0_0 = tim1_0_0 + tim1_0_2;
	       tre2_1_0 = tre1_0_0 - tre1_0_2;
	       tim2_1_0 = tim1_0_0 - tim1_0_2;
	       tre2_0_1 = tre1_0_1 + tre1_0_3;
	       tim2_0_1 = tim1_0_1 + tim1_0_3;
	       tre2_1_1 = tre1_0_1 - tre1_0_3;
	       tim2_1_1 = tim1_0_1 - tim1_0_3;
	       c_re(out[3 * ostride]) = tre2_0_0 + tre2_0_1;
	       c_im(out[3 * ostride]) = tim2_0_0 + tim2_0_1;
	       c_re(out[35 * ostride]) = tre2_0_0 - tre2_0_1;
	       c_im(out[35 * ostride]) = tim2_0_0 - tim2_0_1;
	       c_re(out[19 * ostride]) = tre2_1_0 - tim2_1_1;
	       c_im(out[19 * ostride]) = tim2_1_0 + tre2_1_1;
	       c_re(out[51 * ostride]) = tre2_1_0 + tim2_1_1;
	       c_im(out[51 * ostride]) = tim2_1_0 - tre2_1_1;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_1_0 - tim1_1_2;
	       tim2_0_0 = tim1_1_0 + tre1_1_2;
	       tre2_1_0 = tre1_1_0 + tim1_1_2;
	       tim2_1_0 = tim1_1_0 - tre1_1_2;
	       {
		    FFTW_REAL tre3_0_0;
		    FFTW_REAL tim3_0_0;
		    FFTW_REAL tre3_1_0;
		    FFTW_REAL tim3_1_0;
		    tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 - tim1_1_1);
		    tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 + tre1_1_1);
		    tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 + tim1_1_3);
		    tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 - tim1_1_3);
		    tre2_0_1 = tre3_0_0 - tre3_1_0;
		    tim2_0_1 = tim3_0_0 + tim3_1_0;
		    tre2_1_1 = tre3_0_0 + tre3_1_0;
		    tim2_1_1 = tim3_0_0 - tim3_1_0;
	       }
	       c_re(out[11 * ostride]) = tre2_0_0 + tre2_0_1;
	       c_im(out[11 * ostride]) = tim2_0_0 + tim2_0_1;
	       c_re(out[43 * ostride]) = tre2_0_0 - tre2_0_1;
	       c_im(out[43 * ostride]) = tim2_0_0 - tim2_0_1;
	       c_re(out[27 * ostride]) = tre2_1_0 - tim2_1_1;
	       c_im(out[27 * ostride]) = tim2_1_0 + tre2_1_1;
	       c_re(out[59 * ostride]) = tre2_1_0 + tim2_1_1;
	       c_im(out[59 * ostride]) = tim2_1_0 - tre2_1_1;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_0_2;
	  FFTW_REAL tim1_0_2;
	  FFTW_REAL tre1_0_3;
	  FFTW_REAL tim1_0_3;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  FFTW_REAL tre1_1_2;
	  FFTW_REAL tim1_1_2;
	  FFTW_REAL tre1_1_3;
	  FFTW_REAL tim1_1_3;
	  tre1_0_0 = tre0_4_0 - tim0_4_4;
	  tim1_0_0 = tim0_4_0 + tre0_4_4;
	  tre1_1_0 = tre0_4_0 + tim0_4_4;
	  tim1_1_0 = tim0_4_0 - tre0_4_4;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K923879532) * tre0_4_1) - (((FFTW_REAL) FFTW_K382683432) * tim0_4_1);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K923879532) * tim0_4_1) + (((FFTW_REAL) FFTW_K382683432) * tre0_4_1);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tre0_4_5) + (((FFTW_REAL) FFTW_K923879532) * tim0_4_5);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K923879532) * tre0_4_5) - (((FFTW_REAL) FFTW_K382683432) * tim0_4_5);
	       tre1_0_1 = tre2_0_0 - tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 + tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_4_2 - tim0_4_2);
	       tim2_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_4_2 + tre0_4_2);
	       tre2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_4_6 + tim0_4_6);
	       tim2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_4_6 - tim0_4_6);
	       tre1_0_2 = tre2_0_0 - tre2_1_0;
	       tim1_0_2 = tim2_0_0 + tim2_1_0;
	       tre1_1_2 = tre2_0_0 + tre2_1_0;
	       tim1_1_2 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K382683432) * tre0_4_3) - (((FFTW_REAL) FFTW_K923879532) * tim0_4_3);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K382683432) * tim0_4_3) + (((FFTW_REAL) FFTW_K923879532) * tre0_4_3);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K923879532) * tre0_4_7) + (((FFTW_REAL) FFTW_K382683432) * tim0_4_7);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tre0_4_7) - (((FFTW_REAL) FFTW_K923879532) * tim0_4_7);
	       tre1_0_3 = tre2_0_0 - tre2_1_0;
	       tim1_0_3 = tim2_0_0 + tim2_1_0;
	       tre1_1_3 = tre2_0_0 + tre2_1_0;
	       tim1_1_3 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_0_0 + tre1_0_2;
	       tim2_0_0 = tim1_0_0 + tim1_0_2;
	       tre2_1_0 = tre1_0_0 - tre1_0_2;
	       tim2_1_0 = tim1_0_0 - tim1_0_2;
	       tre2_0_1 = tre1_0_1 + tre1_0_3;
	       tim2_0_1 = tim1_0_1 + tim1_0_3;
	       tre2_1_1 = tre1_0_1 - tre1_0_3;
	       tim2_1_1 = tim1_0_1 - tim1_0_3;
	       c_re(out[4 * ostride]) = tre2_0_0 + tre2_0_1;
	       c_im(out[4 * ostride]) = tim2_0_0 + tim2_0_1;
	       c_re(out[36 * ostride]) = tre2_0_0 - tre2_0_1;
	       c_im(out[36 * ostride]) = tim2_0_0 - tim2_0_1;
	       c_re(out[20 * ostride]) = tre2_1_0 - tim2_1_1;
	       c_im(out[20 * ostride]) = tim2_1_0 + tre2_1_1;
	       c_re(out[52 * ostride]) = tre2_1_0 + tim2_1_1;
	       c_im(out[52 * ostride]) = tim2_1_0 - tre2_1_1;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_1_0 - tim1_1_2;
	       tim2_0_0 = tim1_1_0 + tre1_1_2;
	       tre2_1_0 = tre1_1_0 + tim1_1_2;
	       tim2_1_0 = tim1_1_0 - tre1_1_2;
	       {
		    FFTW_REAL tre3_0_0;
		    FFTW_REAL tim3_0_0;
		    FFTW_REAL tre3_1_0;
		    FFTW_REAL tim3_1_0;
		    tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 - tim1_1_1);
		    tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 + tre1_1_1);
		    tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 + tim1_1_3);
		    tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 - tim1_1_3);
		    tre2_0_1 = tre3_0_0 - tre3_1_0;
		    tim2_0_1 = tim3_0_0 + tim3_1_0;
		    tre2_1_1 = tre3_0_0 + tre3_1_0;
		    tim2_1_1 = tim3_0_0 - tim3_1_0;
	       }
	       c_re(out[12 * ostride]) = tre2_0_0 + tre2_0_1;
	       c_im(out[12 * ostride]) = tim2_0_0 + tim2_0_1;
	       c_re(out[44 * ostride]) = tre2_0_0 - tre2_0_1;
	       c_im(out[44 * ostride]) = tim2_0_0 - tim2_0_1;
	       c_re(out[28 * ostride]) = tre2_1_0 - tim2_1_1;
	       c_im(out[28 * ostride]) = tim2_1_0 + tre2_1_1;
	       c_re(out[60 * ostride]) = tre2_1_0 + tim2_1_1;
	       c_im(out[60 * ostride]) = tim2_1_0 - tre2_1_1;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_0_2;
	  FFTW_REAL tim1_0_2;
	  FFTW_REAL tre1_0_3;
	  FFTW_REAL tim1_0_3;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  FFTW_REAL tre1_1_2;
	  FFTW_REAL tim1_1_2;
	  FFTW_REAL tre1_1_3;
	  FFTW_REAL tim1_1_3;
	  {
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tre0_5_4) + (((FFTW_REAL) FFTW_K923879532) * tim0_5_4);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K923879532) * tre0_5_4) - (((FFTW_REAL) FFTW_K382683432) * tim0_5_4);
	       tre1_0_0 = tre0_5_0 - tre2_1_0;
	       tim1_0_0 = tim0_5_0 + tim2_1_0;
	       tre1_1_0 = tre0_5_0 + tre2_1_0;
	       tim1_1_0 = tim0_5_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K881921264) * tre0_5_1) - (((FFTW_REAL) FFTW_K471396736) * tim0_5_1);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K881921264) * tim0_5_1) + (((FFTW_REAL) FFTW_K471396736) * tre0_5_1);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K773010453) * tre0_5_5) + (((FFTW_REAL) FFTW_K634393284) * tim0_5_5);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K634393284) * tre0_5_5) - (((FFTW_REAL) FFTW_K773010453) * tim0_5_5);
	       tre1_0_1 = tre2_0_0 - tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 + tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K555570233) * tre0_5_2) - (((FFTW_REAL) FFTW_K831469612) * tim0_5_2);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K555570233) * tim0_5_2) + (((FFTW_REAL) FFTW_K831469612) * tre0_5_2);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K980785280) * tre0_5_6) + (((FFTW_REAL) FFTW_K195090322) * tim0_5_6);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K195090322) * tre0_5_6) - (((FFTW_REAL) FFTW_K980785280) * tim0_5_6);
	       tre1_0_2 = tre2_0_0 - tre2_1_0;
	       tim1_0_2 = tim2_0_0 + tim2_1_0;
	       tre1_1_2 = tre2_0_0 + tre2_1_0;
	       tim1_1_2 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K098017140) * tre0_5_3) - (((FFTW_REAL) FFTW_K995184726) * tim0_5_3);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K098017140) * tim0_5_3) + (((FFTW_REAL) FFTW_K995184726) * tre0_5_3);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K290284677) * tim0_5_7) - (((FFTW_REAL) FFTW_K956940335) * tre0_5_7);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K956940335) * tim0_5_7) + (((FFTW_REAL) FFTW_K290284677) * tre0_5_7);
	       tre1_0_3 = tre2_0_0 + tre2_1_0;
	       tim1_0_3 = tim2_0_0 - tim2_1_0;
	       tre1_1_3 = tre2_0_0 - tre2_1_0;
	       tim1_1_3 = tim2_0_0 + tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_0_0 + tre1_0_2;
	       tim2_0_0 = tim1_0_0 + tim1_0_2;
	       tre2_1_0 = tre1_0_0 - tre1_0_2;
	       tim2_1_0 = tim1_0_0 - tim1_0_2;
	       tre2_0_1 = tre1_0_1 + tre1_0_3;
	       tim2_0_1 = tim1_0_1 + tim1_0_3;
	       tre2_1_1 = tre1_0_1 - tre1_0_3;
	       tim2_1_1 = tim1_0_1 - tim1_0_3;
	       c_re(out[5 * ostride]) = tre2_0_0 + tre2_0_1;
	       c_im(out[5 * ostride]) = tim2_0_0 + tim2_0_1;
	       c_re(out[37 * ostride]) = tre2_0_0 - tre2_0_1;
	       c_im(out[37 * ostride]) = tim2_0_0 - tim2_0_1;
	       c_re(out[21 * ostride]) = tre2_1_0 - tim2_1_1;
	       c_im(out[21 * ostride]) = tim2_1_0 + tre2_1_1;
	       c_re(out[53 * ostride]) = tre2_1_0 + tim2_1_1;
	       c_im(out[53 * ostride]) = tim2_1_0 - tre2_1_1;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_1_0 - tim1_1_2;
	       tim2_0_0 = tim1_1_0 + tre1_1_2;
	       tre2_1_0 = tre1_1_0 + tim1_1_2;
	       tim2_1_0 = tim1_1_0 - tre1_1_2;
	       {
		    FFTW_REAL tre3_0_0;
		    FFTW_REAL tim3_0_0;
		    FFTW_REAL tre3_1_0;
		    FFTW_REAL tim3_1_0;
		    tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 - tim1_1_1);
		    tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 + tre1_1_1);
		    tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 + tim1_1_3);
		    tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 - tim1_1_3);
		    tre2_0_1 = tre3_0_0 - tre3_1_0;
		    tim2_0_1 = tim3_0_0 + tim3_1_0;
		    tre2_1_1 = tre3_0_0 + tre3_1_0;
		    tim2_1_1 = tim3_0_0 - tim3_1_0;
	       }
	       c_re(out[13 * ostride]) = tre2_0_0 + tre2_0_1;
	       c_im(out[13 * ostride]) = tim2_0_0 + tim2_0_1;
	       c_re(out[45 * ostride]) = tre2_0_0 - tre2_0_1;
	       c_im(out[45 * ostride]) = tim2_0_0 - tim2_0_1;
	       c_re(out[29 * ostride]) = tre2_1_0 - tim2_1_1;
	       c_im(out[29 * ostride]) = tim2_1_0 + tre2_1_1;
	       c_re(out[61 * ostride]) = tre2_1_0 + tim2_1_1;
	       c_im(out[61 * ostride]) = tim2_1_0 - tre2_1_1;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_0_2;
	  FFTW_REAL tim1_0_2;
	  FFTW_REAL tre1_0_3;
	  FFTW_REAL tim1_0_3;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  FFTW_REAL tre1_1_2;
	  FFTW_REAL tim1_1_2;
	  FFTW_REAL tre1_1_3;
	  FFTW_REAL tim1_1_3;
	  {
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_6_4 + tim0_6_4);
	       tim2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_6_4 - tim0_6_4);
	       tre1_0_0 = tre0_6_0 - tre2_1_0;
	       tim1_0_0 = tim0_6_0 + tim2_1_0;
	       tre1_1_0 = tre0_6_0 + tre2_1_0;
	       tim1_1_0 = tim0_6_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K831469612) * tre0_6_1) - (((FFTW_REAL) FFTW_K555570233) * tim0_6_1);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K831469612) * tim0_6_1) + (((FFTW_REAL) FFTW_K555570233) * tre0_6_1);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K980785280) * tre0_6_5) + (((FFTW_REAL) FFTW_K195090322) * tim0_6_5);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K195090322) * tre0_6_5) - (((FFTW_REAL) FFTW_K980785280) * tim0_6_5);
	       tre1_0_1 = tre2_0_0 - tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 + tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K382683432) * tre0_6_2) - (((FFTW_REAL) FFTW_K923879532) * tim0_6_2);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K382683432) * tim0_6_2) + (((FFTW_REAL) FFTW_K923879532) * tre0_6_2);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tim0_6_6) - (((FFTW_REAL) FFTW_K923879532) * tre0_6_6);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K923879532) * tim0_6_6) + (((FFTW_REAL) FFTW_K382683432) * tre0_6_6);
	       tre1_0_2 = tre2_0_0 + tre2_1_0;
	       tim1_0_2 = tim2_0_0 - tim2_1_0;
	       tre1_1_2 = tre2_0_0 - tre2_1_0;
	       tim1_1_2 = tim2_0_0 + tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K195090322) * tre0_6_3) + (((FFTW_REAL) FFTW_K980785280) * tim0_6_3);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K980785280) * tre0_6_3) - (((FFTW_REAL) FFTW_K195090322) * tim0_6_3);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K831469612) * tim0_6_7) - (((FFTW_REAL) FFTW_K555570233) * tre0_6_7);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K555570233) * tim0_6_7) + (((FFTW_REAL) FFTW_K831469612) * tre0_6_7);
	       tre1_0_3 = tre2_1_0 - tre2_0_0;
	       tim1_0_3 = tim2_0_0 - tim2_1_0;
	       tre1_1_3 = (-(tre2_0_0 + tre2_1_0));
	       tim1_1_3 = tim2_0_0 + tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_0_0 + tre1_0_2;
	       tim2_0_0 = tim1_0_0 + tim1_0_2;
	       tre2_1_0 = tre1_0_0 - tre1_0_2;
	       tim2_1_0 = tim1_0_0 - tim1_0_2;
	       tre2_0_1 = tre1_0_1 + tre1_0_3;
	       tim2_0_1 = tim1_0_1 + tim1_0_3;
	       tre2_1_1 = tre1_0_1 - tre1_0_3;
	       tim2_1_1 = tim1_0_1 - tim1_0_3;
	       c_re(out[6 * ostride]) = tre2_0_0 + tre2_0_1;
	       c_im(out[6 * ostride]) = tim2_0_0 + tim2_0_1;
	       c_re(out[38 * ostride]) = tre2_0_0 - tre2_0_1;
	       c_im(out[38 * ostride]) = tim2_0_0 - tim2_0_1;
	       c_re(out[22 * ostride]) = tre2_1_0 - tim2_1_1;
	       c_im(out[22 * ostride]) = tim2_1_0 + tre2_1_1;
	       c_re(out[54 * ostride]) = tre2_1_0 + tim2_1_1;
	       c_im(out[54 * ostride]) = tim2_1_0 - tre2_1_1;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_1_0 - tim1_1_2;
	       tim2_0_0 = tim1_1_0 + tre1_1_2;
	       tre2_1_0 = tre1_1_0 + tim1_1_2;
	       tim2_1_0 = tim1_1_0 - tre1_1_2;
	       {
		    FFTW_REAL tre3_0_0;
		    FFTW_REAL tim3_0_0;
		    FFTW_REAL tre3_1_0;
		    FFTW_REAL tim3_1_0;
		    tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 - tim1_1_1);
		    tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 + tre1_1_1);
		    tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 + tim1_1_3);
		    tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 - tim1_1_3);
		    tre2_0_1 = tre3_0_0 - tre3_1_0;
		    tim2_0_1 = tim3_0_0 + tim3_1_0;
		    tre2_1_1 = tre3_0_0 + tre3_1_0;
		    tim2_1_1 = tim3_0_0 - tim3_1_0;
	       }
	       c_re(out[14 * ostride]) = tre2_0_0 + tre2_0_1;
	       c_im(out[14 * ostride]) = tim2_0_0 + tim2_0_1;
	       c_re(out[46 * ostride]) = tre2_0_0 - tre2_0_1;
	       c_im(out[46 * ostride]) = tim2_0_0 - tim2_0_1;
	       c_re(out[30 * ostride]) = tre2_1_0 - tim2_1_1;
	       c_im(out[30 * ostride]) = tim2_1_0 + tre2_1_1;
	       c_re(out[62 * ostride]) = tre2_1_0 + tim2_1_1;
	       c_im(out[62 * ostride]) = tim2_1_0 - tre2_1_1;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_0_2;
	  FFTW_REAL tim1_0_2;
	  FFTW_REAL tre1_0_3;
	  FFTW_REAL tim1_0_3;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  FFTW_REAL tre1_1_2;
	  FFTW_REAL tim1_1_2;
	  FFTW_REAL tre1_1_3;
	  FFTW_REAL tim1_1_3;
	  {
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_1_0 = (((FFTW_REAL) FFTW_K923879532) * tre0_7_4) + (((FFTW_REAL) FFTW_K382683432) * tim0_7_4);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tre0_7_4) - (((FFTW_REAL) FFTW_K923879532) * tim0_7_4);
	       tre1_0_0 = tre0_7_0 - tre2_1_0;
	       tim1_0_0 = tim0_7_0 + tim2_1_0;
	       tre1_1_0 = tre0_7_0 + tre2_1_0;
	       tim1_1_0 = tim0_7_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K773010453) * tre0_7_1) - (((FFTW_REAL) FFTW_K634393284) * tim0_7_1);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K773010453) * tim0_7_1) + (((FFTW_REAL) FFTW_K634393284) * tre0_7_1);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K290284677) * tim0_7_5) - (((FFTW_REAL) FFTW_K956940335) * tre0_7_5);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K956940335) * tim0_7_5) + (((FFTW_REAL) FFTW_K290284677) * tre0_7_5);
	       tre1_0_1 = tre2_0_0 + tre2_1_0;
	       tim1_0_1 = tim2_0_0 - tim2_1_0;
	       tre1_1_1 = tre2_0_0 - tre2_1_0;
	       tim1_1_1 = tim2_0_0 + tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K195090322) * tre0_7_2) - (((FFTW_REAL) FFTW_K980785280) * tim0_7_2);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K195090322) * tim0_7_2) + (((FFTW_REAL) FFTW_K980785280) * tre0_7_2);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K831469612) * tim0_7_6) - (((FFTW_REAL) FFTW_K555570233) * tre0_7_6);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K555570233) * tim0_7_6) + (((FFTW_REAL) FFTW_K831469612) * tre0_7_6);
	       tre1_0_2 = tre2_0_0 + tre2_1_0;
	       tim1_0_2 = tim2_0_0 - tim2_1_0;
	       tre1_1_2 = tre2_0_0 - tre2_1_0;
	       tim1_1_2 = tim2_0_0 + tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = (((FFTW_REAL) FFTW_K471396736) * tre0_7_3) + (((FFTW_REAL) FFTW_K881921264) * tim0_7_3);
	       tim2_0_0 = (((FFTW_REAL) FFTW_K881921264) * tre0_7_3) - (((FFTW_REAL) FFTW_K471396736) * tim0_7_3);
	       tre2_1_0 = (((FFTW_REAL) FFTW_K098017140) * tre0_7_7) + (((FFTW_REAL) FFTW_K995184726) * tim0_7_7);
	       tim2_1_0 = (((FFTW_REAL) FFTW_K098017140) * tim0_7_7) - (((FFTW_REAL) FFTW_K995184726) * tre0_7_7);
	       tre1_0_3 = tre2_1_0 - tre2_0_0;
	       tim1_0_3 = tim2_0_0 + tim2_1_0;
	       tre1_1_3 = (-(tre2_0_0 + tre2_1_0));
	       tim1_1_3 = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_0_0 + tre1_0_2;
	       tim2_0_0 = tim1_0_0 + tim1_0_2;
	       tre2_1_0 = tre1_0_0 - tre1_0_2;
	       tim2_1_0 = tim1_0_0 - tim1_0_2;
	       tre2_0_1 = tre1_0_1 + tre1_0_3;
	       tim2_0_1 = tim1_0_1 + tim1_0_3;
	       tre2_1_1 = tre1_0_1 - tre1_0_3;
	       tim2_1_1 = tim1_0_1 - tim1_0_3;
	       c_re(out[7 * ostride]) = tre2_0_0 + tre2_0_1;
	       c_im(out[7 * ostride]) = tim2_0_0 + tim2_0_1;
	       c_re(out[39 * ostride]) = tre2_0_0 - tre2_0_1;
	       c_im(out[39 * ostride]) = tim2_0_0 - tim2_0_1;
	       c_re(out[23 * ostride]) = tre2_1_0 - tim2_1_1;
	       c_im(out[23 * ostride]) = tim2_1_0 + tre2_1_1;
	       c_re(out[55 * ostride]) = tre2_1_0 + tim2_1_1;
	       c_im(out[55 * ostride]) = tim2_1_0 - tre2_1_1;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_0_1;
	       FFTW_REAL tim2_0_1;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       FFTW_REAL tre2_1_1;
	       FFTW_REAL tim2_1_1;
	       tre2_0_0 = tre1_1_0 - tim1_1_2;
	       tim2_0_0 = tim1_1_0 + tre1_1_2;
	       tre2_1_0 = tre1_1_0 + tim1_1_2;
	       tim2_1_0 = tim1_1_0 - tre1_1_2;
	       {
		    FFTW_REAL tre3_0_0;
		    FFTW_REAL tim3_0_0;
		    FFTW_REAL tre3_1_0;
		    FFTW_REAL tim3_1_0;
		    tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 - tim1_1_1);
		    tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 + tre1_1_1);
		    tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 + tim1_1_3);
		    tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 - tim1_1_3);
		    tre2_0_1 = tre3_0_0 - tre3_1_0;
		    tim2_0_1 = tim3_0_0 + tim3_1_0;
		    tre2_1_1 = tre3_0_0 + tre3_1_0;
		    tim2_1_1 = tim3_0_0 - tim3_1_0;
	       }
	       c_re(out[15 * ostride]) = tre2_0_0 + tre2_0_1;
	       c_im(out[15 * ostride]) = tim2_0_0 + tim2_0_1;
	       c_re(out[47 * ostride]) = tre2_0_0 - tre2_0_1;
	       c_im(out[47 * ostride]) = tim2_0_0 - tim2_0_1;
	       c_re(out[31 * ostride]) = tre2_1_0 - tim2_1_1;
	       c_im(out[31 * ostride]) = tim2_1_0 + tre2_1_1;
	       c_re(out[63 * ostride]) = tre2_1_0 + tim2_1_1;
	       c_im(out[63 * ostride]) = tim2_1_0 - tre2_1_1;
	  }
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 90 FP additions and 36 FP multiplications */

void fftwi_no_twiddle_7(const FFTW_COMPLEX *in, FFTW_COMPLEX *out, int istride, int ostride)
{
     FFTW_REAL tre0_0_0;
     FFTW_REAL tim0_0_0;
     FFTW_REAL tre0_1_0;
     FFTW_REAL tim0_1_0;
     FFTW_REAL tre0_2_0;
     FFTW_REAL tim0_2_0;
     FFTW_REAL tre0_3_0;
     FFTW_REAL tim0_3_0;
     FFTW_REAL tre0_4_0;
     FFTW_REAL tim0_4_0;
     FFTW_REAL tre0_5_0;
     FFTW_REAL tim0_5_0;
     FFTW_REAL tre0_6_0;
     FFTW_REAL tim0_6_0;
     tre0_0_0 = c_re(in[0]);
     tim0_0_0 = c_im(in[0]);
     tre0_1_0 = c_re(in[istride]);
     tim0_1_0 = c_im(in[istride]);
     tre0_2_0 = c_re(in[2 * istride]);
     tim0_2_0 = c_im(in[2 * istride]);
     tre0_3_0 = c_re(in[3 * istride]);
     tim0_3_0 = c_im(in[3 * istride]);
     tre0_4_0 = c_re(in[4 * istride]);
     tim0_4_0 = c_im(in[4 * istride]);
     tre0_5_0 = c_re(in[5 * istride]);
     tim0_5_0 = c_im(in[5 * istride]);
     tre0_6_0 = c_re(in[6 * istride]);
     tim0_6_0 = c_im(in[6 * istride]);
     c_re(out[0]) = tre0_0_0 + tre0_1_0 + tre0_2_0 + tre0_3_0 + tre0_4_0 + tre0_5_0 + tre0_6_0;
     c_im(out[0]) = tim0_0_0 + tim0_1_0 + tim0_2_0 + tim0_3_0 + tim0_4_0 + tim0_5_0 + tim0_6_0;
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tre1_1_0;
	  tre1_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K623489801) * (tre0_1_0 + tre0_6_0)) - (((FFTW_REAL) FFTW_K900968867) * (tre0_3_0 + tre0_4_0)) - (((FFTW_REAL) FFTW_K222520933) * (tre0_2_0 + tre0_5_0));
	  tre1_1_0 = (((FFTW_REAL) FFTW_K781831482) * (tim0_6_0 - tim0_1_0)) + (((FFTW_REAL) FFTW_K974927912) * (tim0_5_0 - tim0_2_0)) + (((FFTW_REAL) FFTW_K433883739) * (tim0_4_0 - tim0_3_0));
	  c_re(out[ostride]) = tre1_0_0 + tre1_1_0;
	  c_re(out[6 * ostride]) = tre1_0_0 - tre1_1_0;
     }
     {
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tim1_1_0;
	  tim1_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K623489801) * (tim0_1_0 + tim0_6_0)) - (((FFTW_REAL) FFTW_K900968867) * (tim0_3_0 + tim0_4_0)) - (((FFTW_REAL) FFTW_K222520933) * (tim0_2_0 + tim0_5_0));
	  tim1_1_0 = (((FFTW_REAL) FFTW_K781831482) * (tre0_1_0 - tre0_6_0)) + (((FFTW_REAL) FFTW_K974927912) * (tre0_2_0 - tre0_5_0)) + (((FFTW_REAL) FFTW_K433883739) * (tre0_3_0 - tre0_4_0));
	  c_im(out[ostride]) = tim1_0_0 + tim1_1_0;
	  c_im(out[6 * ostride]) = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tre1_1_0;
	  tre1_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K623489801) * (tre0_3_0 + tre0_4_0)) - (((FFTW_REAL) FFTW_K900968867) * (tre0_2_0 + tre0_5_0)) - (((FFTW_REAL) FFTW_K222520933) * (tre0_1_0 + tre0_6_0));
	  tre1_1_0 = (((FFTW_REAL) FFTW_K974927912) * (tim0_6_0 - tim0_1_0)) + (((FFTW_REAL) FFTW_K433883739) * (tim0_2_0 - tim0_5_0)) + (((FFTW_REAL) FFTW_K781831482) * (tim0_3_0 - tim0_4_0));
	  c_re(out[2 * ostride]) = tre1_0_0 + tre1_1_0;
	  c_re(out[5 * ostride]) = tre1_0_0 - tre1_1_0;
     }
     {
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tim1_1_0;
	  tim1_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K623489801) * (tim0_3_0 + tim0_4_0)) - (((FFTW_REAL) FFTW_K900968867) * (tim0_2_0 + tim0_5_0)) - (((FFTW_REAL) FFTW_K222520933) * (tim0_1_0 + tim0_6_0));
	  tim1_1_0 = (((FFTW_REAL) FFTW_K974927912) * (tre0_1_0 - tre0_6_0)) + (((FFTW_REAL) FFTW_K433883739) * (tre0_5_0 - tre0_2_0)) + (((FFTW_REAL) FFTW_K781831482) * (tre0_4_0 - tre0_3_0));
	  c_im(out[2 * ostride]) = tim1_0_0 + tim1_1_0;
	  c_im(out[5 * ostride]) = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tre1_1_0;
	  tre1_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K623489801) * (tre0_2_0 + tre0_5_0)) - (((FFTW_REAL) FFTW_K222520933) * (tre0_3_0 + tre0_4_0)) - (((FFTW_REAL) FFTW_K900968867) * (tre0_1_0 + tre0_6_0));
	  tre1_1_0 = (((FFTW_REAL) FFTW_K433883739) * (tim0_6_0 - tim0_1_0)) + (((FFTW_REAL) FFTW_K781831482) * (tim0_2_0 - tim0_5_0)) + (((FFTW_REAL) FFTW_K974927912) * (tim0_4_0 - tim0_3_0));
	  c_re(out[3 * ostride]) = tre1_0_0 + tre1_1_0;
	  c_re(out[4 * ostride]) = tre1_0_0 - tre1_1_0;
     }
     {
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tim1_1_0;
	  tim1_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K623489801) * (tim0_2_0 + tim0_5_0)) - (((FFTW_REAL) FFTW_K222520933) * (tim0_3_0 + tim0_4_0)) - (((FFTW_REAL) FFTW_K900968867) * (tim0_1_0 + tim0_6_0));
	  tim1_1_0 = (((FFTW_REAL) FFTW_K433883739) * (tre0_1_0 - tre0_6_0)) + (((FFTW_REAL) FFTW_K781831482) * (tre0_5_0 - tre0_2_0)) + (((FFTW_REAL) FFTW_K974927912) * (tre0_3_0 - tre0_4_0));
	  c_im(out[3 * ostride]) = tim1_0_0 + tim1_1_0;
	  c_im(out[4 * ostride]) = tim1_0_0 - tim1_1_0;
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 52 FP additions and 4 FP multiplications */

void fftwi_no_twiddle_8(const FFTW_COMPLEX *in, FFTW_COMPLEX *out, int istride, int ostride)
{
     FFTW_REAL tre0_0_0;
     FFTW_REAL tim0_0_0;
     FFTW_REAL tre0_0_1;
     FFTW_REAL tim0_0_1;
     FFTW_REAL tre0_0_2;
     FFTW_REAL tim0_0_2;
     FFTW_REAL tre0_0_3;
     FFTW_REAL tim0_0_3;
     FFTW_REAL tre0_1_0;
     FFTW_REAL tim0_1_0;
     FFTW_REAL tre0_1_1;
     FFTW_REAL tim0_1_1;
     FFTW_REAL tre0_1_2;
     FFTW_REAL tim0_1_2;
     FFTW_REAL tre0_1_3;
     FFTW_REAL tim0_1_3;
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  tre1_0_0 = c_re(in[0]);
	  tim1_0_0 = c_im(in[0]);
	  tre1_1_0 = c_re(in[4 * istride]);
	  tim1_1_0 = c_im(in[4 * istride]);
	  tre0_0_0 = tre1_0_0 + tre1_1_0;
	  tim0_0_0 = tim1_0_0 + tim1_1_0;
	  tre0_1_0 = tre1_0_0 - tre1_1_0;
	  tim0_1_0 = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  tre1_0_0 = c_re(in[istride]);
	  tim1_0_0 = c_im(in[istride]);
	  tre1_1_0 = c_re(in[5 * istride]);
	  tim1_1_0 = c_im(in[5 * istride]);
	  tre0_0_1 = tre1_0_0 + tre1_1_0;
	  tim0_0_1 = tim1_0_0 + tim1_1_0;
	  tre0_1_1 = tre1_0_0 - tre1_1_0;
	  tim0_1_1 = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  tre1_0_0 = c_re(in[2 * istride]);
	  tim1_0_0 = c_im(in[2 * istride]);
	  tre1_1_0 = c_re(in[6 * istride]);
	  tim1_1_0 = c_im(in[6 * istride]);
	  tre0_0_2 = tre1_0_0 + tre1_1_0;
	  tim0_0_2 = tim1_0_0 + tim1_1_0;
	  tre0_1_2 = tre1_0_0 - tre1_1_0;
	  tim0_1_2 = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  tre1_0_0 = c_re(in[3 * istride]);
	  tim1_0_0 = c_im(in[3 * istride]);
	  tre1_1_0 = c_re(in[7 * istride]);
	  tim1_1_0 = c_im(in[7 * istride]);
	  tre0_0_3 = tre1_0_0 + tre1_1_0;
	  tim0_0_3 = tim1_0_0 + tim1_1_0;
	  tre0_1_3 = tre1_0_0 - tre1_1_0;
	  tim0_1_3 = tim1_0_0 - tim1_1_0;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  tre1_0_0 = tre0_0_0 + tre0_0_2;
	  tim1_0_0 = tim0_0_0 + tim0_0_2;
	  tre1_1_0 = tre0_0_0 - tre0_0_2;
	  tim1_1_0 = tim0_0_0 - tim0_0_2;
	  tre1_0_1 = tre0_0_1 + tre0_0_3;
	  tim1_0_1 = tim0_0_1 + tim0_0_3;
	  tre1_1_1 = tre0_0_1 - tre0_0_3;
	  tim1_1_1 = tim0_0_1 - tim0_0_3;
	  c_re(out[0]) = tre1_0_0 + tre1_0_1;
	  c_im(out[0]) = tim1_0_0 + tim1_0_1;
	  c_re(out[4 * ostride]) = tre1_0_0 - tre1_0_1;
	  c_im(out[4 * ostride]) = tim1_0_0 - tim1_0_1;
	  c_re(out[2 * ostride]) = tre1_1_0 - tim1_1_1;
	  c_im(out[2 * ostride]) = tim1_1_0 + tre1_1_1;
	  c_re(out[6 * ostride]) = tre1_1_0 + tim1_1_1;
	  c_im(out[6 * ostride]) = tim1_1_0 - tre1_1_1;
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_0_1;
	  FFTW_REAL tim1_0_1;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_1_1;
	  FFTW_REAL tim1_1_1;
	  tre1_0_0 = tre0_1_0 - tim0_1_2;
	  tim1_0_0 = tim0_1_0 + tre0_1_2;
	  tre1_1_0 = tre0_1_0 + tim0_1_2;
	  tim1_1_0 = tim0_1_0 - tre0_1_2;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tre2_1_0;
	       FFTW_REAL tim2_1_0;
	       tre2_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_1_1 - tim0_1_1);
	       tim2_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_1_1 + tre0_1_1);
	       tre2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_1_3 + tim0_1_3);
	       tim2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_1_3 - tim0_1_3);
	       tre1_0_1 = tre2_0_0 - tre2_1_0;
	       tim1_0_1 = tim2_0_0 + tim2_1_0;
	       tre1_1_1 = tre2_0_0 + tre2_1_0;
	       tim1_1_1 = tim2_0_0 - tim2_1_0;
	  }
	  c_re(out[ostride]) = tre1_0_0 + tre1_0_1;
	  c_im(out[ostride]) = tim1_0_0 + tim1_0_1;
	  c_re(out[5 * ostride]) = tre1_0_0 - tre1_0_1;
	  c_im(out[5 * ostride]) = tim1_0_0 - tim1_0_1;
	  c_re(out[3 * ostride]) = tre1_1_0 - tim1_1_1;
	  c_im(out[3 * ostride]) = tim1_1_0 + tre1_1_1;
	  c_re(out[7 * ostride]) = tre1_1_0 + tim1_1_1;
	  c_im(out[7 * ostride]) = tim1_1_0 - tre1_1_1;
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 92 FP additions and 40 FP multiplications */

void fftwi_no_twiddle_9(const FFTW_COMPLEX *in, FFTW_COMPLEX *out, int istride, int ostride)
{
     FFTW_REAL tre0_0_0;
     FFTW_REAL tim0_0_0;
     FFTW_REAL tre0_0_1;
     FFTW_REAL tim0_0_1;
     FFTW_REAL tre0_0_2;
     FFTW_REAL tim0_0_2;
     FFTW_REAL tre0_1_0;
     FFTW_REAL tim0_1_0;
     FFTW_REAL tre0_1_1;
     FFTW_REAL tim0_1_1;
     FFTW_REAL tre0_1_2;
     FFTW_REAL tim0_1_2;
     FFTW_REAL tre0_2_0;
     FFTW_REAL tim0_2_0;
     FFTW_REAL tre0_2_1;
     FFTW_REAL tim0_2_1;
     FFTW_REAL tre0_2_2;
     FFTW_REAL tim0_2_2;
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_2_0;
	  FFTW_REAL tim1_2_0;
	  tre1_0_0 = c_re(in[0]);
	  tim1_0_0 = c_im(in[0]);
	  tre1_1_0 = c_re(in[3 * istride]);
	  tim1_1_0 = c_im(in[3 * istride]);
	  tre1_2_0 = c_re(in[6 * istride]);
	  tim1_2_0 = c_im(in[6 * istride]);
	  tre0_0_0 = tre1_0_0 + tre1_1_0 + tre1_2_0;
	  tim0_0_0 = tim1_0_0 + tim1_1_0 + tim1_2_0;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tre2_1_0;
	       tre2_0_0 = tre1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tre1_1_0 + tre1_2_0));
	       tre2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tim1_2_0 - tim1_1_0);
	       tre0_1_0 = tre2_0_0 + tre2_1_0;
	       tre0_2_0 = tre2_0_0 - tre2_1_0;
	  }
	  {
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tim2_1_0;
	       tim2_0_0 = tim1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tim1_1_0 + tim1_2_0));
	       tim2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tre1_1_0 - tre1_2_0);
	       tim0_1_0 = tim2_0_0 + tim2_1_0;
	       tim0_2_0 = tim2_0_0 - tim2_1_0;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_2_0;
	  FFTW_REAL tim1_2_0;
	  tre1_0_0 = c_re(in[istride]);
	  tim1_0_0 = c_im(in[istride]);
	  tre1_1_0 = c_re(in[4 * istride]);
	  tim1_1_0 = c_im(in[4 * istride]);
	  tre1_2_0 = c_re(in[7 * istride]);
	  tim1_2_0 = c_im(in[7 * istride]);
	  tre0_0_1 = tre1_0_0 + tre1_1_0 + tre1_2_0;
	  tim0_0_1 = tim1_0_0 + tim1_1_0 + tim1_2_0;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tre2_1_0;
	       tre2_0_0 = tre1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tre1_1_0 + tre1_2_0));
	       tre2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tim1_2_0 - tim1_1_0);
	       tre0_1_1 = tre2_0_0 + tre2_1_0;
	       tre0_2_1 = tre2_0_0 - tre2_1_0;
	  }
	  {
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tim2_1_0;
	       tim2_0_0 = tim1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tim1_1_0 + tim1_2_0));
	       tim2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tre1_1_0 - tre1_2_0);
	       tim0_1_1 = tim2_0_0 + tim2_1_0;
	       tim0_2_1 = tim2_0_0 - tim2_1_0;
	  }
     }
     {
	  FFTW_REAL tre1_0_0;
	  FFTW_REAL tim1_0_0;
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_2_0;
	  FFTW_REAL tim1_2_0;
	  tre1_0_0 = c_re(in[2 * istride]);
	  tim1_0_0 = c_im(in[2 * istride]);
	  tre1_1_0 = c_re(in[5 * istride]);
	  tim1_1_0 = c_im(in[5 * istride]);
	  tre1_2_0 = c_re(in[8 * istride]);
	  tim1_2_0 = c_im(in[8 * istride]);
	  tre0_0_2 = tre1_0_0 + tre1_1_0 + tre1_2_0;
	  tim0_0_2 = tim1_0_0 + tim1_1_0 + tim1_2_0;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tre2_1_0;
	       tre2_0_0 = tre1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tre1_1_0 + tre1_2_0));
	       tre2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tim1_2_0 - tim1_1_0);
	       tre0_1_2 = tre2_0_0 + tre2_1_0;
	       tre0_2_2 = tre2_0_0 - tre2_1_0;
	  }
	  {
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tim2_1_0;
	       tim2_0_0 = tim1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tim1_1_0 + tim1_2_0));
	       tim2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tre1_1_0 - tre1_2_0);
	       tim0_1_2 = tim2_0_0 + tim2_1_0;
	       tim0_2_2 = tim2_0_0 - tim2_1_0;
	  }
     }
     c_re(out[0]) = tre0_0_0 + tre0_0_1 + tre0_0_2;
     c_im(out[0]) = tim0_0_0 + tim0_0_1 + tim0_0_2;
     {
	  FFTW_REAL tre2_0_0;
	  FFTW_REAL tre2_1_0;
	  tre2_0_0 = tre0_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tre0_0_1 + tre0_0_2));
	  tre2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tim0_0_2 - tim0_0_1);
	  c_re(out[3 * ostride]) = tre2_0_0 + tre2_1_0;
	  c_re(out[6 * ostride]) = tre2_0_0 - tre2_1_0;
     }
     {
	  FFTW_REAL tim2_0_0;
	  FFTW_REAL tim2_1_0;
	  tim2_0_0 = tim0_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tim0_0_1 + tim0_0_2));
	  tim2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tre0_0_1 - tre0_0_2);
	  c_im(out[3 * ostride]) = tim2_0_0 + tim2_1_0;
	  c_im(out[6 * ostride]) = tim2_0_0 - tim2_1_0;
     }
     {
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_2_0;
	  FFTW_REAL tim1_2_0;
	  tre1_1_0 = (((FFTW_REAL) FFTW_K766044443) * tre0_1_1) - (((FFTW_REAL) FFTW_K642787609) * tim0_1_1);
	  tim1_1_0 = (((FFTW_REAL) FFTW_K766044443) * tim0_1_1) + (((FFTW_REAL) FFTW_K642787609) * tre0_1_1);
	  tre1_2_0 = (((FFTW_REAL) FFTW_K173648177) * tre0_1_2) - (((FFTW_REAL) FFTW_K984807753) * tim0_1_2);
	  tim1_2_0 = (((FFTW_REAL) FFTW_K173648177) * tim0_1_2) + (((FFTW_REAL) FFTW_K984807753) * tre0_1_2);
	  c_re(out[ostride]) = tre0_1_0 + tre1_1_0 + tre1_2_0;
	  c_im(out[ostride]) = tim0_1_0 + tim1_1_0 + tim1_2_0;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tre2_1_0;
	       tre2_0_0 = tre0_1_0 - (((FFTW_REAL) FFTW_K499999999) * (tre1_1_0 + tre1_2_0));
	       tre2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tim1_2_0 - tim1_1_0);
	       c_re(out[4 * ostride]) = tre2_0_0 + tre2_1_0;
	       c_re(out[7 * ostride]) = tre2_0_0 - tre2_1_0;
	  }
	  {
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tim2_1_0;
	       tim2_0_0 = tim0_1_0 - (((FFTW_REAL) FFTW_K499999999) * (tim1_1_0 + tim1_2_0));
	       tim2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tre1_1_0 - tre1_2_0);
	       c_im(out[4 * ostride]) = tim2_0_0 + tim2_1_0;
	       c_im(out[7 * ostride]) = tim2_0_0 - tim2_1_0;
	  }
     }
     {
	  FFTW_REAL tre1_1_0;
	  FFTW_REAL tim1_1_0;
	  FFTW_REAL tre1_2_0;
	  FFTW_REAL tim1_2_0;
	  tre1_1_0 = (((FFTW_REAL) FFTW_K173648177) * tre0_2_1) - (((FFTW_REAL) FFTW_K984807753) * tim0_2_1);
	  tim1_1_0 = (((FFTW_REAL) FFTW_K173648177) * tim0_2_1) + (((FFTW_REAL) FFTW_K984807753) * tre0_2_1);
	  tre1_2_0 = (((FFTW_REAL) FFTW_K939692620) * tre0_2_2) + (((FFTW_REAL) FFTW_K342020143) * tim0_2_2);
	  tim1_2_0 = (((FFTW_REAL) FFTW_K342020143) * tre0_2_2) - (((FFTW_REAL) FFTW_K939692620) * tim0_2_2);
	  c_re(out[2 * ostride]) = tre0_2_0 + tre1_1_0 - tre1_2_0;
	  c_im(out[2 * ostride]) = tim0_2_0 + tim1_1_0 + tim1_2_0;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tre2_1_0;
	       tre2_0_0 = tre0_2_0 + (((FFTW_REAL) FFTW_K499999999) * (tre1_2_0 - tre1_1_0));
	       tre2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tim1_2_0 - tim1_1_0);
	       c_re(out[5 * ostride]) = tre2_0_0 + tre2_1_0;
	       c_re(out[8 * ostride]) = tre2_0_0 - tre2_1_0;
	  }
	  {
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tim2_1_0;
	       tim2_0_0 = tim0_2_0 - (((FFTW_REAL) FFTW_K499999999) * (tim1_1_0 + tim1_2_0));
	       tim2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tre1_1_0 + tre1_2_0);
	       c_im(out[5 * ostride]) = tim2_0_0 + tim2_1_0;
	       c_im(out[8 * ostride]) = tim2_0_0 - tim2_1_0;
	  }
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 126 FP additions and 68 FP multiplications */

void fftw_twiddle_10(FFTW_COMPLEX *A, const FFTW_COMPLEX *W, int stride, int m, int dist)
{
     int i;
     COMPLEX *inout;
     inout = A;
     for (i = 0; i < m; i = i + 1, inout = inout + dist, W = W + 9) {
	  FFTW_REAL tre0_0_0;
	  FFTW_REAL tim0_0_0;
	  FFTW_REAL tre0_0_1;
	  FFTW_REAL tim0_0_1;
	  FFTW_REAL tre0_0_2;
	  FFTW_REAL tim0_0_2;
	  FFTW_REAL tre0_0_3;
	  FFTW_REAL tim0_0_3;
	  FFTW_REAL tre0_0_4;
	  FFTW_REAL tim0_0_4;
	  FFTW_REAL tre0_1_0;
	  FFTW_REAL tim0_1_0;
	  FFTW_REAL tre0_1_1;
	  FFTW_REAL tim0_1_1;
	  FFTW_REAL tre0_1_2;
	  FFTW_REAL tim0_1_2;
	  FFTW_REAL tre0_1_3;
	  FFTW_REAL tim0_1_3;
	  FFTW_REAL tre0_1_4;
	  FFTW_REAL tim0_1_4;
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       tre1_0_0 = c_re(inout[0]);
	       tim1_0_0 = c_im(inout[0]);
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[5 * stride]);
		    ti = c_im(inout[5 * stride]);
		    twr = c_re(W[4]);
		    twi = c_im(W[4]);
		    tre1_1_0 = (tr * twr) - (ti * twi);
		    tim1_1_0 = (tr * twi) + (ti * twr);
	       }
	       tre0_0_0 = tre1_0_0 + tre1_1_0;
	       tim0_0_0 = tim1_0_0 + tim1_1_0;
	       tre0_1_0 = tre1_0_0 - tre1_1_0;
	       tim0_1_0 = tim1_0_0 - tim1_1_0;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[2 * stride]);
		    ti = c_im(inout[2 * stride]);
		    twr = c_re(W[1]);
		    twi = c_im(W[1]);
		    tre1_0_0 = (tr * twr) - (ti * twi);
		    tim1_0_0 = (tr * twi) + (ti * twr);
	       }
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[7 * stride]);
		    ti = c_im(inout[7 * stride]);
		    twr = c_re(W[6]);
		    twi = c_im(W[6]);
		    tre1_1_0 = (tr * twr) - (ti * twi);
		    tim1_1_0 = (tr * twi) + (ti * twr);
	       }
	       tre0_0_1 = tre1_0_0 + tre1_1_0;
	       tim0_0_1 = tim1_0_0 + tim1_1_0;
	       tre0_1_1 = tre1_0_0 - tre1_1_0;
	       tim0_1_1 = tim1_0_0 - tim1_1_0;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[4 * stride]);
		    ti = c_im(inout[4 * stride]);
		    twr = c_re(W[3]);
		    twi = c_im(W[3]);
		    tre1_0_0 = (tr * twr) - (ti * twi);
		    tim1_0_0 = (tr * twi) + (ti * twr);
	       }
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[9 * stride]);
		    ti = c_im(inout[9 * stride]);
		    twr = c_re(W[8]);
		    twi = c_im(W[8]);
		    tre1_1_0 = (tr * twr) - (ti * twi);
		    tim1_1_0 = (tr * twi) + (ti * twr);
	       }
	       tre0_0_2 = tre1_0_0 + tre1_1_0;
	       tim0_0_2 = tim1_0_0 + tim1_1_0;
	       tre0_1_2 = tre1_0_0 - tre1_1_0;
	       tim0_1_2 = tim1_0_0 - tim1_1_0;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[6 * stride]);
		    ti = c_im(inout[6 * stride]);
		    twr = c_re(W[5]);
		    twi = c_im(W[5]);
		    tre1_0_0 = (tr * twr) - (ti * twi);
		    tim1_0_0 = (tr * twi) + (ti * twr);
	       }
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[stride]);
		    ti = c_im(inout[stride]);
		    twr = c_re(W[0]);
		    twi = c_im(W[0]);
		    tre1_1_0 = (tr * twr) - (ti * twi);
		    tim1_1_0 = (tr * twi) + (ti * twr);
	       }
	       tre0_0_3 = tre1_0_0 + tre1_1_0;
	       tim0_0_3 = tim1_0_0 + tim1_1_0;
	       tre0_1_3 = tre1_0_0 - tre1_1_0;
	       tim0_1_3 = tim1_0_0 - tim1_1_0;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[8 * stride]);
		    ti = c_im(inout[8 * stride]);
		    twr = c_re(W[7]);
		    twi = c_im(W[7]);
		    tre1_0_0 = (tr * twr) - (ti * twi);
		    tim1_0_0 = (tr * twi) + (ti * twr);
	       }
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[3 * stride]);
		    ti = c_im(inout[3 * stride]);
		    twr = c_re(W[2]);
		    twi = c_im(W[2]);
		    tre1_1_0 = (tr * twr) - (ti * twi);
		    tim1_1_0 = (tr * twi) + (ti * twr);
	       }
	       tre0_0_4 = tre1_0_0 + tre1_1_0;
	       tim0_0_4 = tim1_0_0 + tim1_1_0;
	       tre0_1_4 = tre1_0_0 - tre1_1_0;
	       tim0_1_4 = tim1_0_0 - tim1_1_0;
	  }
	  c_re(inout[0]) = tre0_0_0 + tre0_0_1 + tre0_0_2 + tre0_0_3 + tre0_0_4;
	  c_im(inout[0]) = tim0_0_0 + tim0_0_1 + tim0_0_2 + tim0_0_3 + tim0_0_4;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tre2_1_0;
	       tre2_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K309016994) * (tre0_0_1 + tre0_0_4)) - (((FFTW_REAL) FFTW_K809016994) * (tre0_0_2 + tre0_0_3));
	       tre2_1_0 = (((FFTW_REAL) FFTW_K951056516) * (tim0_0_1 - tim0_0_4)) + (((FFTW_REAL) FFTW_K587785252) * (tim0_0_2 - tim0_0_3));
	       c_re(inout[6 * stride]) = tre2_0_0 + tre2_1_0;
	       c_re(inout[4 * stride]) = tre2_0_0 - tre2_1_0;
	  }
	  {
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tim2_1_0;
	       tim2_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K309016994) * (tim0_0_1 + tim0_0_4)) - (((FFTW_REAL) FFTW_K809016994) * (tim0_0_2 + tim0_0_3));
	       tim2_1_0 = (((FFTW_REAL) FFTW_K951056516) * (tre0_0_4 - tre0_0_1)) + (((FFTW_REAL) FFTW_K587785252) * (tre0_0_3 - tre0_0_2));
	       c_im(inout[6 * stride]) = tim2_0_0 + tim2_1_0;
	       c_im(inout[4 * stride]) = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tre2_1_0;
	       tre2_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K309016994) * (tre0_0_2 + tre0_0_3)) - (((FFTW_REAL) FFTW_K809016994) * (tre0_0_1 + tre0_0_4));
	       tre2_1_0 = (((FFTW_REAL) FFTW_K587785252) * (tim0_0_1 - tim0_0_4)) + (((FFTW_REAL) FFTW_K951056516) * (tim0_0_3 - tim0_0_2));
	       c_re(inout[2 * stride]) = tre2_0_0 + tre2_1_0;
	       c_re(inout[8 * stride]) = tre2_0_0 - tre2_1_0;
	  }
	  {
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tim2_1_0;
	       tim2_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K309016994) * (tim0_0_2 + tim0_0_3)) - (((FFTW_REAL) FFTW_K809016994) * (tim0_0_1 + tim0_0_4));
	       tim2_1_0 = (((FFTW_REAL) FFTW_K587785252) * (tre0_0_4 - tre0_0_1)) + (((FFTW_REAL) FFTW_K951056516) * (tre0_0_2 - tre0_0_3));
	       c_im(inout[2 * stride]) = tim2_0_0 + tim2_1_0;
	       c_im(inout[8 * stride]) = tim2_0_0 - tim2_1_0;
	  }
	  c_re(inout[5 * stride]) = tre0_1_0 + tre0_1_1 + tre0_1_2 + tre0_1_3 + tre0_1_4;
	  c_im(inout[5 * stride]) = tim0_1_0 + tim0_1_1 + tim0_1_2 + tim0_1_3 + tim0_1_4;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tre2_1_0;
	       tre2_0_0 = tre0_1_0 + (((FFTW_REAL) FFTW_K309016994) * (tre0_1_1 + tre0_1_4)) - (((FFTW_REAL) FFTW_K809016994) * (tre0_1_2 + tre0_1_3));
	       tre2_1_0 = (((FFTW_REAL) FFTW_K951056516) * (tim0_1_1 - tim0_1_4)) + (((FFTW_REAL) FFTW_K587785252) * (tim0_1_2 - tim0_1_3));
	       c_re(inout[stride]) = tre2_0_0 + tre2_1_0;
	       c_re(inout[9 * stride]) = tre2_0_0 - tre2_1_0;
	  }
	  {
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tim2_1_0;
	       tim2_0_0 = tim0_1_0 + (((FFTW_REAL) FFTW_K309016994) * (tim0_1_1 + tim0_1_4)) - (((FFTW_REAL) FFTW_K809016994) * (tim0_1_2 + tim0_1_3));
	       tim2_1_0 = (((FFTW_REAL) FFTW_K951056516) * (tre0_1_4 - tre0_1_1)) + (((FFTW_REAL) FFTW_K587785252) * (tre0_1_3 - tre0_1_2));
	       c_im(inout[stride]) = tim2_0_0 + tim2_1_0;
	       c_im(inout[9 * stride]) = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tre2_1_0;
	       tre2_0_0 = tre0_1_0 + (((FFTW_REAL) FFTW_K309016994) * (tre0_1_2 + tre0_1_3)) - (((FFTW_REAL) FFTW_K809016994) * (tre0_1_1 + tre0_1_4));
	       tre2_1_0 = (((FFTW_REAL) FFTW_K587785252) * (tim0_1_1 - tim0_1_4)) + (((FFTW_REAL) FFTW_K951056516) * (tim0_1_3 - tim0_1_2));
	       c_re(inout[7 * stride]) = tre2_0_0 + tre2_1_0;
	       c_re(inout[3 * stride]) = tre2_0_0 - tre2_1_0;
	  }
	  {
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tim2_1_0;
	       tim2_0_0 = tim0_1_0 + (((FFTW_REAL) FFTW_K309016994) * (tim0_1_2 + tim0_1_3)) - (((FFTW_REAL) FFTW_K809016994) * (tim0_1_1 + tim0_1_4));
	       tim2_1_0 = (((FFTW_REAL) FFTW_K587785252) * (tre0_1_4 - tre0_1_1)) + (((FFTW_REAL) FFTW_K951056516) * (tre0_1_2 - tre0_1_3));
	       c_im(inout[7 * stride]) = tim2_0_0 + tim2_1_0;
	       c_im(inout[3 * stride]) = tim2_0_0 - tim2_1_0;
	  }
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 174 FP additions and 84 FP multiplications */

void fftw_twiddle_16(FFTW_COMPLEX *A, const FFTW_COMPLEX *W, int stride, int m, int dist)
{
     int i;
     COMPLEX *inout;
     inout = A;
     for (i = 0; i < m; i = i + 1, inout = inout + dist, W = W + 15) {
	  FFTW_REAL tre0_0_0;
	  FFTW_REAL tim0_0_0;
	  FFTW_REAL tre0_0_1;
	  FFTW_REAL tim0_0_1;
	  FFTW_REAL tre0_0_2;
	  FFTW_REAL tim0_0_2;
	  FFTW_REAL tre0_0_3;
	  FFTW_REAL tim0_0_3;
	  FFTW_REAL tre0_1_0;
	  FFTW_REAL tim0_1_0;
	  FFTW_REAL tre0_1_1;
	  FFTW_REAL tim0_1_1;
	  FFTW_REAL tre0_1_2;
	  FFTW_REAL tim0_1_2;
	  FFTW_REAL tre0_1_3;
	  FFTW_REAL tim0_1_3;
	  FFTW_REAL tre0_2_0;
	  FFTW_REAL tim0_2_0;
	  FFTW_REAL tre0_2_1;
	  FFTW_REAL tim0_2_1;
	  FFTW_REAL tre0_2_2;
	  FFTW_REAL tim0_2_2;
	  FFTW_REAL tre0_2_3;
	  FFTW_REAL tim0_2_3;
	  FFTW_REAL tre0_3_0;
	  FFTW_REAL tim0_3_0;
	  FFTW_REAL tre0_3_1;
	  FFTW_REAL tim0_3_1;
	  FFTW_REAL tre0_3_2;
	  FFTW_REAL tim0_3_2;
	  FFTW_REAL tre0_3_3;
	  FFTW_REAL tim0_3_3;
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = c_re(inout[0]);
		    tim2_0_0 = c_im(inout[0]);
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[8 * stride]);
			 ti = c_im(inout[8 * stride]);
			 twr = c_re(W[7]);
			 twi = c_im(W[7]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_0 = tre2_0_0 + tre2_1_0;
		    tim1_0_0 = tim2_0_0 + tim2_1_0;
		    tre1_1_0 = tre2_0_0 - tre2_1_0;
		    tim1_1_0 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[4 * stride]);
			 ti = c_im(inout[4 * stride]);
			 twr = c_re(W[3]);
			 twi = c_im(W[3]);
			 tre2_0_0 = (tr * twr) - (ti * twi);
			 tim2_0_0 = (tr * twi) + (ti * twr);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[12 * stride]);
			 ti = c_im(inout[12 * stride]);
			 twr = c_re(W[11]);
			 twi = c_im(W[11]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       tre0_0_0 = tre1_0_0 + tre1_0_1;
	       tim0_0_0 = tim1_0_0 + tim1_0_1;
	       tre0_2_0 = tre1_0_0 - tre1_0_1;
	       tim0_2_0 = tim1_0_0 - tim1_0_1;
	       tre0_1_0 = tre1_1_0 + tim1_1_1;
	       tim0_1_0 = tim1_1_0 - tre1_1_1;
	       tre0_3_0 = tre1_1_0 - tim1_1_1;
	       tim0_3_0 = tim1_1_0 + tre1_1_1;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[stride]);
			 ti = c_im(inout[stride]);
			 twr = c_re(W[0]);
			 twi = c_im(W[0]);
			 tre2_0_0 = (tr * twr) - (ti * twi);
			 tim2_0_0 = (tr * twi) + (ti * twr);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[9 * stride]);
			 ti = c_im(inout[9 * stride]);
			 twr = c_re(W[8]);
			 twi = c_im(W[8]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_0 = tre2_0_0 + tre2_1_0;
		    tim1_0_0 = tim2_0_0 + tim2_1_0;
		    tre1_1_0 = tre2_0_0 - tre2_1_0;
		    tim1_1_0 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[5 * stride]);
			 ti = c_im(inout[5 * stride]);
			 twr = c_re(W[4]);
			 twi = c_im(W[4]);
			 tre2_0_0 = (tr * twr) - (ti * twi);
			 tim2_0_0 = (tr * twi) + (ti * twr);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[13 * stride]);
			 ti = c_im(inout[13 * stride]);
			 twr = c_re(W[12]);
			 twi = c_im(W[12]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       tre0_0_1 = tre1_0_0 + tre1_0_1;
	       tim0_0_1 = tim1_0_0 + tim1_0_1;
	       tre0_2_1 = tre1_0_0 - tre1_0_1;
	       tim0_2_1 = tim1_0_0 - tim1_0_1;
	       tre0_1_1 = tre1_1_0 + tim1_1_1;
	       tim0_1_1 = tim1_1_0 - tre1_1_1;
	       tre0_3_1 = tre1_1_0 - tim1_1_1;
	       tim0_3_1 = tim1_1_0 + tre1_1_1;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[2 * stride]);
			 ti = c_im(inout[2 * stride]);
			 twr = c_re(W[1]);
			 twi = c_im(W[1]);
			 tre2_0_0 = (tr * twr) - (ti * twi);
			 tim2_0_0 = (tr * twi) + (ti * twr);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[10 * stride]);
			 ti = c_im(inout[10 * stride]);
			 twr = c_re(W[9]);
			 twi = c_im(W[9]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_0 = tre2_0_0 + tre2_1_0;
		    tim1_0_0 = tim2_0_0 + tim2_1_0;
		    tre1_1_0 = tre2_0_0 - tre2_1_0;
		    tim1_1_0 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[6 * stride]);
			 ti = c_im(inout[6 * stride]);
			 twr = c_re(W[5]);
			 twi = c_im(W[5]);
			 tre2_0_0 = (tr * twr) - (ti * twi);
			 tim2_0_0 = (tr * twi) + (ti * twr);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[14 * stride]);
			 ti = c_im(inout[14 * stride]);
			 twr = c_re(W[13]);
			 twi = c_im(W[13]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       tre0_0_2 = tre1_0_0 + tre1_0_1;
	       tim0_0_2 = tim1_0_0 + tim1_0_1;
	       tre0_2_2 = tre1_0_0 - tre1_0_1;
	       tim0_2_2 = tim1_0_0 - tim1_0_1;
	       tre0_1_2 = tre1_1_0 + tim1_1_1;
	       tim0_1_2 = tim1_1_0 - tre1_1_1;
	       tre0_3_2 = tre1_1_0 - tim1_1_1;
	       tim0_3_2 = tim1_1_0 + tre1_1_1;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[3 * stride]);
			 ti = c_im(inout[3 * stride]);
			 twr = c_re(W[2]);
			 twi = c_im(W[2]);
			 tre2_0_0 = (tr * twr) - (ti * twi);
			 tim2_0_0 = (tr * twi) + (ti * twr);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[11 * stride]);
			 ti = c_im(inout[11 * stride]);
			 twr = c_re(W[10]);
			 twi = c_im(W[10]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_0 = tre2_0_0 + tre2_1_0;
		    tim1_0_0 = tim2_0_0 + tim2_1_0;
		    tre1_1_0 = tre2_0_0 - tre2_1_0;
		    tim1_1_0 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[7 * stride]);
			 ti = c_im(inout[7 * stride]);
			 twr = c_re(W[6]);
			 twi = c_im(W[6]);
			 tre2_0_0 = (tr * twr) - (ti * twi);
			 tim2_0_0 = (tr * twi) + (ti * twr);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[15 * stride]);
			 ti = c_im(inout[15 * stride]);
			 twr = c_re(W[14]);
			 twi = c_im(W[14]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       tre0_0_3 = tre1_0_0 + tre1_0_1;
	       tim0_0_3 = tim1_0_0 + tim1_0_1;
	       tre0_2_3 = tre1_0_0 - tre1_0_1;
	       tim0_2_3 = tim1_0_0 - tim1_0_1;
	       tre0_1_3 = tre1_1_0 + tim1_1_1;
	       tim0_1_3 = tim1_1_0 - tre1_1_1;
	       tre0_3_3 = tre1_1_0 - tim1_1_1;
	       tim0_3_3 = tim1_1_0 + tre1_1_1;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       tre1_0_0 = tre0_0_0 + tre0_0_2;
	       tim1_0_0 = tim0_0_0 + tim0_0_2;
	       tre1_1_0 = tre0_0_0 - tre0_0_2;
	       tim1_1_0 = tim0_0_0 - tim0_0_2;
	       tre1_0_1 = tre0_0_1 + tre0_0_3;
	       tim1_0_1 = tim0_0_1 + tim0_0_3;
	       tre1_1_1 = tre0_0_1 - tre0_0_3;
	       tim1_1_1 = tim0_0_1 - tim0_0_3;
	       c_re(inout[0]) = tre1_0_0 + tre1_0_1;
	       c_im(inout[0]) = tim1_0_0 + tim1_0_1;
	       c_re(inout[8 * stride]) = tre1_0_0 - tre1_0_1;
	       c_im(inout[8 * stride]) = tim1_0_0 - tim1_0_1;
	       c_re(inout[4 * stride]) = tre1_1_0 + tim1_1_1;
	       c_im(inout[4 * stride]) = tim1_1_0 - tre1_1_1;
	       c_re(inout[12 * stride]) = tre1_1_0 - tim1_1_1;
	       c_im(inout[12 * stride]) = tim1_1_0 + tre1_1_1;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       {
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_1_2 + tim0_1_2);
		    tim2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_1_2 - tre0_1_2);
		    tre1_0_0 = tre0_1_0 + tre2_1_0;
		    tim1_0_0 = tim0_1_0 + tim2_1_0;
		    tre1_1_0 = tre0_1_0 - tre2_1_0;
		    tim1_1_0 = tim0_1_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K923879532) * tre0_1_1) + (((FFTW_REAL) FFTW_K382683432) * tim0_1_1);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K923879532) * tim0_1_1) - (((FFTW_REAL) FFTW_K382683432) * tre0_1_1);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tre0_1_3) + (((FFTW_REAL) FFTW_K923879532) * tim0_1_3);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tim0_1_3) - (((FFTW_REAL) FFTW_K923879532) * tre0_1_3);
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       c_re(inout[stride]) = tre1_0_0 + tre1_0_1;
	       c_im(inout[stride]) = tim1_0_0 + tim1_0_1;
	       c_re(inout[9 * stride]) = tre1_0_0 - tre1_0_1;
	       c_im(inout[9 * stride]) = tim1_0_0 - tim1_0_1;
	       c_re(inout[5 * stride]) = tre1_1_0 + tim1_1_1;
	       c_im(inout[5 * stride]) = tim1_1_0 - tre1_1_1;
	       c_re(inout[13 * stride]) = tre1_1_0 - tim1_1_1;
	       c_im(inout[13 * stride]) = tim1_1_0 + tre1_1_1;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       tre1_0_0 = tre0_2_0 + tim0_2_2;
	       tim1_0_0 = tim0_2_0 - tre0_2_2;
	       tre1_1_0 = tre0_2_0 - tim0_2_2;
	       tim1_1_0 = tim0_2_0 + tre0_2_2;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_2_1 + tim0_2_1);
		    tim2_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_2_1 - tre0_2_1);
		    tre2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_2_3 - tre0_2_3);
		    tim2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_2_3 + tre0_2_3);
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 - tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 + tim2_1_0;
	       }
	       c_re(inout[2 * stride]) = tre1_0_0 + tre1_0_1;
	       c_im(inout[2 * stride]) = tim1_0_0 + tim1_0_1;
	       c_re(inout[10 * stride]) = tre1_0_0 - tre1_0_1;
	       c_im(inout[10 * stride]) = tim1_0_0 - tim1_0_1;
	       c_re(inout[6 * stride]) = tre1_1_0 + tim1_1_1;
	       c_im(inout[6 * stride]) = tim1_1_0 - tre1_1_1;
	       c_re(inout[14 * stride]) = tre1_1_0 - tim1_1_1;
	       c_im(inout[14 * stride]) = tim1_1_0 + tre1_1_1;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       {
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_3_2 - tre0_3_2);
		    tim2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_3_2 + tre0_3_2);
		    tre1_0_0 = tre0_3_0 + tre2_1_0;
		    tim1_0_0 = tim0_3_0 - tim2_1_0;
		    tre1_1_0 = tre0_3_0 - tre2_1_0;
		    tim1_1_0 = tim0_3_0 + tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K382683432) * tre0_3_1) + (((FFTW_REAL) FFTW_K923879532) * tim0_3_1);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K382683432) * tim0_3_1) - (((FFTW_REAL) FFTW_K923879532) * tre0_3_1);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K923879532) * tre0_3_3) + (((FFTW_REAL) FFTW_K382683432) * tim0_3_3);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tre0_3_3) - (((FFTW_REAL) FFTW_K923879532) * tim0_3_3);
		    tre1_0_1 = tre2_0_0 - tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 + tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       c_re(inout[3 * stride]) = tre1_0_0 + tre1_0_1;
	       c_im(inout[3 * stride]) = tim1_0_0 + tim1_0_1;
	       c_re(inout[11 * stride]) = tre1_0_0 - tre1_0_1;
	       c_im(inout[11 * stride]) = tim1_0_0 - tim1_0_1;
	       c_re(inout[7 * stride]) = tre1_1_0 + tim1_1_1;
	       c_im(inout[7 * stride]) = tim1_1_0 - tre1_1_1;
	       c_re(inout[15 * stride]) = tre1_1_0 - tim1_1_1;
	       c_im(inout[15 * stride]) = tim1_1_0 + tre1_1_1;
	  }
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 6 FP additions and 4 FP multiplications */

void fftw_twiddle_2(FFTW_COMPLEX *A, const FFTW_COMPLEX *W, int stride, int m, int dist)
{
     int i;
     COMPLEX *inout;
     inout = A;
     for (i = 0; i < m; i = i + 1, inout = inout + dist, W = W + 1) {
	  FFTW_REAL tre0_0_0;
	  FFTW_REAL tim0_0_0;
	  FFTW_REAL tre0_1_0;
	  FFTW_REAL tim0_1_0;
	  tre0_0_0 = c_re(inout[0]);
	  tim0_0_0 = c_im(inout[0]);
	  {
	       FFTW_REAL tr;
	       FFTW_REAL ti;
	       FFTW_REAL twr;
	       FFTW_REAL twi;
	       tr = c_re(inout[stride]);
	       ti = c_im(inout[stride]);
	       twr = c_re(W[0]);
	       twi = c_im(W[0]);
	       tre0_1_0 = (tr * twr) - (ti * twi);
	       tim0_1_0 = (tr * twi) + (ti * twr);
	  }
	  c_re(inout[0]) = tre0_0_0 + tre0_1_0;
	  c_im(inout[0]) = tim0_0_0 + tim0_1_0;
	  c_re(inout[stride]) = tre0_0_0 - tre0_1_0;
	  c_im(inout[stride]) = tim0_0_0 - tim0_1_0;
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 18 FP additions and 12 FP multiplications */

void fftw_twiddle_3(FFTW_COMPLEX *A, const FFTW_COMPLEX *W, int stride, int m, int dist)
{
     int i;
     COMPLEX *inout;
     inout = A;
     for (i = 0; i < m; i = i + 1, inout = inout + dist, W = W + 2) {
	  FFTW_REAL tre0_0_0;
	  FFTW_REAL tim0_0_0;
	  FFTW_REAL tre0_1_0;
	  FFTW_REAL tim0_1_0;
	  FFTW_REAL tre0_2_0;
	  FFTW_REAL tim0_2_0;
	  tre0_0_0 = c_re(inout[0]);
	  tim0_0_0 = c_im(inout[0]);
	  {
	       FFTW_REAL tr;
	       FFTW_REAL ti;
	       FFTW_REAL twr;
	       FFTW_REAL twi;
	       tr = c_re(inout[stride]);
	       ti = c_im(inout[stride]);
	       twr = c_re(W[0]);
	       twi = c_im(W[0]);
	       tre0_1_0 = (tr * twr) - (ti * twi);
	       tim0_1_0 = (tr * twi) + (ti * twr);
	  }
	  {
	       FFTW_REAL tr;
	       FFTW_REAL ti;
	       FFTW_REAL twr;
	       FFTW_REAL twi;
	       tr = c_re(inout[2 * stride]);
	       ti = c_im(inout[2 * stride]);
	       twr = c_re(W[1]);
	       twi = c_im(W[1]);
	       tre0_2_0 = (tr * twr) - (ti * twi);
	       tim0_2_0 = (tr * twi) + (ti * twr);
	  }
	  c_re(inout[0]) = tre0_0_0 + tre0_1_0 + tre0_2_0;
	  c_im(inout[0]) = tim0_0_0 + tim0_1_0 + tim0_2_0;
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tre1_1_0;
	       tre1_0_0 = tre0_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tre0_1_0 + tre0_2_0));
	       tre1_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tim0_1_0 - tim0_2_0);
	       c_re(inout[stride]) = tre1_0_0 + tre1_1_0;
	       c_re(inout[2 * stride]) = tre1_0_0 - tre1_1_0;
	  }
	  {
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tim1_1_0;
	       tim1_0_0 = tim0_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tim0_1_0 + tim0_2_0));
	       tim1_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tre0_2_0 - tre0_1_0);
	       c_im(inout[stride]) = tim1_0_0 + tim1_1_0;
	       c_im(inout[2 * stride]) = tim1_0_0 - tim1_1_0;
	  }
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 438 FP additions and 212 FP multiplications */

void fftw_twiddle_32(FFTW_COMPLEX *A, const FFTW_COMPLEX *W, int stride, int m, int dist)
{
     int i;
     COMPLEX *inout;
     inout = A;
     for (i = 0; i < m; i = i + 1, inout = inout + dist, W = W + 31) {
	  FFTW_REAL tre0_0_0;
	  FFTW_REAL tim0_0_0;
	  FFTW_REAL tre0_0_1;
	  FFTW_REAL tim0_0_1;
	  FFTW_REAL tre0_0_2;
	  FFTW_REAL tim0_0_2;
	  FFTW_REAL tre0_0_3;
	  FFTW_REAL tim0_0_3;
	  FFTW_REAL tre0_0_4;
	  FFTW_REAL tim0_0_4;
	  FFTW_REAL tre0_0_5;
	  FFTW_REAL tim0_0_5;
	  FFTW_REAL tre0_0_6;
	  FFTW_REAL tim0_0_6;
	  FFTW_REAL tre0_0_7;
	  FFTW_REAL tim0_0_7;
	  FFTW_REAL tre0_1_0;
	  FFTW_REAL tim0_1_0;
	  FFTW_REAL tre0_1_1;
	  FFTW_REAL tim0_1_1;
	  FFTW_REAL tre0_1_2;
	  FFTW_REAL tim0_1_2;
	  FFTW_REAL tre0_1_3;
	  FFTW_REAL tim0_1_3;
	  FFTW_REAL tre0_1_4;
	  FFTW_REAL tim0_1_4;
	  FFTW_REAL tre0_1_5;
	  FFTW_REAL tim0_1_5;
	  FFTW_REAL tre0_1_6;
	  FFTW_REAL tim0_1_6;
	  FFTW_REAL tre0_1_7;
	  FFTW_REAL tim0_1_7;
	  FFTW_REAL tre0_2_0;
	  FFTW_REAL tim0_2_0;
	  FFTW_REAL tre0_2_1;
	  FFTW_REAL tim0_2_1;
	  FFTW_REAL tre0_2_2;
	  FFTW_REAL tim0_2_2;
	  FFTW_REAL tre0_2_3;
	  FFTW_REAL tim0_2_3;
	  FFTW_REAL tre0_2_4;
	  FFTW_REAL tim0_2_4;
	  FFTW_REAL tre0_2_5;
	  FFTW_REAL tim0_2_5;
	  FFTW_REAL tre0_2_6;
	  FFTW_REAL tim0_2_6;
	  FFTW_REAL tre0_2_7;
	  FFTW_REAL tim0_2_7;
	  FFTW_REAL tre0_3_0;
	  FFTW_REAL tim0_3_0;
	  FFTW_REAL tre0_3_1;
	  FFTW_REAL tim0_3_1;
	  FFTW_REAL tre0_3_2;
	  FFTW_REAL tim0_3_2;
	  FFTW_REAL tre0_3_3;
	  FFTW_REAL tim0_3_3;
	  FFTW_REAL tre0_3_4;
	  FFTW_REAL tim0_3_4;
	  FFTW_REAL tre0_3_5;
	  FFTW_REAL tim0_3_5;
	  FFTW_REAL tre0_3_6;
	  FFTW_REAL tim0_3_6;
	  FFTW_REAL tre0_3_7;
	  FFTW_REAL tim0_3_7;
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = c_re(inout[0]);
		    tim2_0_0 = c_im(inout[0]);
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[16 * stride]);
			 ti = c_im(inout[16 * stride]);
			 twr = c_re(W[15]);
			 twi = c_im(W[15]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_0 = tre2_0_0 + tre2_1_0;
		    tim1_0_0 = tim2_0_0 + tim2_1_0;
		    tre1_1_0 = tre2_0_0 - tre2_1_0;
		    tim1_1_0 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[8 * stride]);
			 ti = c_im(inout[8 * stride]);
			 twr = c_re(W[7]);
			 twi = c_im(W[7]);
			 tre2_0_0 = (tr * twr) - (ti * twi);
			 tim2_0_0 = (tr * twi) + (ti * twr);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[24 * stride]);
			 ti = c_im(inout[24 * stride]);
			 twr = c_re(W[23]);
			 twi = c_im(W[23]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       tre0_0_0 = tre1_0_0 + tre1_0_1;
	       tim0_0_0 = tim1_0_0 + tim1_0_1;
	       tre0_2_0 = tre1_0_0 - tre1_0_1;
	       tim0_2_0 = tim1_0_0 - tim1_0_1;
	       tre0_1_0 = tre1_1_0 + tim1_1_1;
	       tim0_1_0 = tim1_1_0 - tre1_1_1;
	       tre0_3_0 = tre1_1_0 - tim1_1_1;
	       tim0_3_0 = tim1_1_0 + tre1_1_1;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[stride]);
			 ti = c_im(inout[stride]);
			 twr = c_re(W[0]);
			 twi = c_im(W[0]);
			 tre2_0_0 = (tr * twr) - (ti * twi);
			 tim2_0_0 = (tr * twi) + (ti * twr);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[17 * stride]);
			 ti = c_im(inout[17 * stride]);
			 twr = c_re(W[16]);
			 twi = c_im(W[16]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_0 = tre2_0_0 + tre2_1_0;
		    tim1_0_0 = tim2_0_0 + tim2_1_0;
		    tre1_1_0 = tre2_0_0 - tre2_1_0;
		    tim1_1_0 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[9 * stride]);
			 ti = c_im(inout[9 * stride]);
			 twr = c_re(W[8]);
			 twi = c_im(W[8]);
			 tre2_0_0 = (tr * twr) - (ti * twi);
			 tim2_0_0 = (tr * twi) + (ti * twr);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[25 * stride]);
			 ti = c_im(inout[25 * stride]);
			 twr = c_re(W[24]);
			 twi = c_im(W[24]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       tre0_0_1 = tre1_0_0 + tre1_0_1;
	       tim0_0_1 = tim1_0_0 + tim1_0_1;
	       tre0_2_1 = tre1_0_0 - tre1_0_1;
	       tim0_2_1 = tim1_0_0 - tim1_0_1;
	       tre0_1_1 = tre1_1_0 + tim1_1_1;
	       tim0_1_1 = tim1_1_0 - tre1_1_1;
	       tre0_3_1 = tre1_1_0 - tim1_1_1;
	       tim0_3_1 = tim1_1_0 + tre1_1_1;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[2 * stride]);
			 ti = c_im(inout[2 * stride]);
			 twr = c_re(W[1]);
			 twi = c_im(W[1]);
			 tre2_0_0 = (tr * twr) - (ti * twi);
			 tim2_0_0 = (tr * twi) + (ti * twr);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[18 * stride]);
			 ti = c_im(inout[18 * stride]);
			 twr = c_re(W[17]);
			 twi = c_im(W[17]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_0 = tre2_0_0 + tre2_1_0;
		    tim1_0_0 = tim2_0_0 + tim2_1_0;
		    tre1_1_0 = tre2_0_0 - tre2_1_0;
		    tim1_1_0 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[10 * stride]);
			 ti = c_im(inout[10 * stride]);
			 twr = c_re(W[9]);
			 twi = c_im(W[9]);
			 tre2_0_0 = (tr * twr) - (ti * twi);
			 tim2_0_0 = (tr * twi) + (ti * twr);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[26 * stride]);
			 ti = c_im(inout[26 * stride]);
			 twr = c_re(W[25]);
			 twi = c_im(W[25]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       tre0_0_2 = tre1_0_0 + tre1_0_1;
	       tim0_0_2 = tim1_0_0 + tim1_0_1;
	       tre0_2_2 = tre1_0_0 - tre1_0_1;
	       tim0_2_2 = tim1_0_0 - tim1_0_1;
	       tre0_1_2 = tre1_1_0 + tim1_1_1;
	       tim0_1_2 = tim1_1_0 - tre1_1_1;
	       tre0_3_2 = tre1_1_0 - tim1_1_1;
	       tim0_3_2 = tim1_1_0 + tre1_1_1;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[3 * stride]);
			 ti = c_im(inout[3 * stride]);
			 twr = c_re(W[2]);
			 twi = c_im(W[2]);
			 tre2_0_0 = (tr * twr) - (ti * twi);
			 tim2_0_0 = (tr * twi) + (ti * twr);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[19 * stride]);
			 ti = c_im(inout[19 * stride]);
			 twr = c_re(W[18]);
			 twi = c_im(W[18]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_0 = tre2_0_0 + tre2_1_0;
		    tim1_0_0 = tim2_0_0 + tim2_1_0;
		    tre1_1_0 = tre2_0_0 - tre2_1_0;
		    tim1_1_0 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[11 * stride]);
			 ti = c_im(inout[11 * stride]);
			 twr = c_re(W[10]);
			 twi = c_im(W[10]);
			 tre2_0_0 = (tr * twr) - (ti * twi);
			 tim2_0_0 = (tr * twi) + (ti * twr);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[27 * stride]);
			 ti = c_im(inout[27 * stride]);
			 twr = c_re(W[26]);
			 twi = c_im(W[26]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       tre0_0_3 = tre1_0_0 + tre1_0_1;
	       tim0_0_3 = tim1_0_0 + tim1_0_1;
	       tre0_2_3 = tre1_0_0 - tre1_0_1;
	       tim0_2_3 = tim1_0_0 - tim1_0_1;
	       tre0_1_3 = tre1_1_0 + tim1_1_1;
	       tim0_1_3 = tim1_1_0 - tre1_1_1;
	       tre0_3_3 = tre1_1_0 - tim1_1_1;
	       tim0_3_3 = tim1_1_0 + tre1_1_1;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[4 * stride]);
			 ti = c_im(inout[4 * stride]);
			 twr = c_re(W[3]);
			 twi = c_im(W[3]);
			 tre2_0_0 = (tr * twr) - (ti * twi);
			 tim2_0_0 = (tr * twi) + (ti * twr);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[20 * stride]);
			 ti = c_im(inout[20 * stride]);
			 twr = c_re(W[19]);
			 twi = c_im(W[19]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_0 = tre2_0_0 + tre2_1_0;
		    tim1_0_0 = tim2_0_0 + tim2_1_0;
		    tre1_1_0 = tre2_0_0 - tre2_1_0;
		    tim1_1_0 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[12 * stride]);
			 ti = c_im(inout[12 * stride]);
			 twr = c_re(W[11]);
			 twi = c_im(W[11]);
			 tre2_0_0 = (tr * twr) - (ti * twi);
			 tim2_0_0 = (tr * twi) + (ti * twr);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[28 * stride]);
			 ti = c_im(inout[28 * stride]);
			 twr = c_re(W[27]);
			 twi = c_im(W[27]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       tre0_0_4 = tre1_0_0 + tre1_0_1;
	       tim0_0_4 = tim1_0_0 + tim1_0_1;
	       tre0_2_4 = tre1_0_0 - tre1_0_1;
	       tim0_2_4 = tim1_0_0 - tim1_0_1;
	       tre0_1_4 = tre1_1_0 + tim1_1_1;
	       tim0_1_4 = tim1_1_0 - tre1_1_1;
	       tre0_3_4 = tre1_1_0 - tim1_1_1;
	       tim0_3_4 = tim1_1_0 + tre1_1_1;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[5 * stride]);
			 ti = c_im(inout[5 * stride]);
			 twr = c_re(W[4]);
			 twi = c_im(W[4]);
			 tre2_0_0 = (tr * twr) - (ti * twi);
			 tim2_0_0 = (tr * twi) + (ti * twr);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[21 * stride]);
			 ti = c_im(inout[21 * stride]);
			 twr = c_re(W[20]);
			 twi = c_im(W[20]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_0 = tre2_0_0 + tre2_1_0;
		    tim1_0_0 = tim2_0_0 + tim2_1_0;
		    tre1_1_0 = tre2_0_0 - tre2_1_0;
		    tim1_1_0 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[13 * stride]);
			 ti = c_im(inout[13 * stride]);
			 twr = c_re(W[12]);
			 twi = c_im(W[12]);
			 tre2_0_0 = (tr * twr) - (ti * twi);
			 tim2_0_0 = (tr * twi) + (ti * twr);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[29 * stride]);
			 ti = c_im(inout[29 * stride]);
			 twr = c_re(W[28]);
			 twi = c_im(W[28]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       tre0_0_5 = tre1_0_0 + tre1_0_1;
	       tim0_0_5 = tim1_0_0 + tim1_0_1;
	       tre0_2_5 = tre1_0_0 - tre1_0_1;
	       tim0_2_5 = tim1_0_0 - tim1_0_1;
	       tre0_1_5 = tre1_1_0 + tim1_1_1;
	       tim0_1_5 = tim1_1_0 - tre1_1_1;
	       tre0_3_5 = tre1_1_0 - tim1_1_1;
	       tim0_3_5 = tim1_1_0 + tre1_1_1;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[6 * stride]);
			 ti = c_im(inout[6 * stride]);
			 twr = c_re(W[5]);
			 twi = c_im(W[5]);
			 tre2_0_0 = (tr * twr) - (ti * twi);
			 tim2_0_0 = (tr * twi) + (ti * twr);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[22 * stride]);
			 ti = c_im(inout[22 * stride]);
			 twr = c_re(W[21]);
			 twi = c_im(W[21]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_0 = tre2_0_0 + tre2_1_0;
		    tim1_0_0 = tim2_0_0 + tim2_1_0;
		    tre1_1_0 = tre2_0_0 - tre2_1_0;
		    tim1_1_0 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[14 * stride]);
			 ti = c_im(inout[14 * stride]);
			 twr = c_re(W[13]);
			 twi = c_im(W[13]);
			 tre2_0_0 = (tr * twr) - (ti * twi);
			 tim2_0_0 = (tr * twi) + (ti * twr);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[30 * stride]);
			 ti = c_im(inout[30 * stride]);
			 twr = c_re(W[29]);
			 twi = c_im(W[29]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       tre0_0_6 = tre1_0_0 + tre1_0_1;
	       tim0_0_6 = tim1_0_0 + tim1_0_1;
	       tre0_2_6 = tre1_0_0 - tre1_0_1;
	       tim0_2_6 = tim1_0_0 - tim1_0_1;
	       tre0_1_6 = tre1_1_0 + tim1_1_1;
	       tim0_1_6 = tim1_1_0 - tre1_1_1;
	       tre0_3_6 = tre1_1_0 - tim1_1_1;
	       tim0_3_6 = tim1_1_0 + tre1_1_1;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[7 * stride]);
			 ti = c_im(inout[7 * stride]);
			 twr = c_re(W[6]);
			 twi = c_im(W[6]);
			 tre2_0_0 = (tr * twr) - (ti * twi);
			 tim2_0_0 = (tr * twi) + (ti * twr);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[23 * stride]);
			 ti = c_im(inout[23 * stride]);
			 twr = c_re(W[22]);
			 twi = c_im(W[22]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_0 = tre2_0_0 + tre2_1_0;
		    tim1_0_0 = tim2_0_0 + tim2_1_0;
		    tre1_1_0 = tre2_0_0 - tre2_1_0;
		    tim1_1_0 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[15 * stride]);
			 ti = c_im(inout[15 * stride]);
			 twr = c_re(W[14]);
			 twi = c_im(W[14]);
			 tre2_0_0 = (tr * twr) - (ti * twi);
			 tim2_0_0 = (tr * twi) + (ti * twr);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[31 * stride]);
			 ti = c_im(inout[31 * stride]);
			 twr = c_re(W[30]);
			 twi = c_im(W[30]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       tre0_0_7 = tre1_0_0 + tre1_0_1;
	       tim0_0_7 = tim1_0_0 + tim1_0_1;
	       tre0_2_7 = tre1_0_0 - tre1_0_1;
	       tim0_2_7 = tim1_0_0 - tim1_0_1;
	       tre0_1_7 = tre1_1_0 + tim1_1_1;
	       tim0_1_7 = tim1_1_0 - tre1_1_1;
	       tre0_3_7 = tre1_1_0 - tim1_1_1;
	       tim0_3_7 = tim1_1_0 + tre1_1_1;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_0_2;
	       FFTW_REAL tim1_0_2;
	       FFTW_REAL tre1_0_3;
	       FFTW_REAL tim1_0_3;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       FFTW_REAL tre1_1_2;
	       FFTW_REAL tim1_1_2;
	       FFTW_REAL tre1_1_3;
	       FFTW_REAL tim1_1_3;
	       tre1_0_0 = tre0_0_0 + tre0_0_4;
	       tim1_0_0 = tim0_0_0 + tim0_0_4;
	       tre1_1_0 = tre0_0_0 - tre0_0_4;
	       tim1_1_0 = tim0_0_0 - tim0_0_4;
	       tre1_0_1 = tre0_0_1 + tre0_0_5;
	       tim1_0_1 = tim0_0_1 + tim0_0_5;
	       tre1_1_1 = tre0_0_1 - tre0_0_5;
	       tim1_1_1 = tim0_0_1 - tim0_0_5;
	       tre1_0_2 = tre0_0_2 + tre0_0_6;
	       tim1_0_2 = tim0_0_2 + tim0_0_6;
	       tre1_1_2 = tre0_0_2 - tre0_0_6;
	       tim1_1_2 = tim0_0_2 - tim0_0_6;
	       tre1_0_3 = tre0_0_3 + tre0_0_7;
	       tim1_0_3 = tim0_0_3 + tim0_0_7;
	       tre1_1_3 = tre0_0_3 - tre0_0_7;
	       tim1_1_3 = tim0_0_3 - tim0_0_7;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_0_0 + tre1_0_2;
		    tim2_0_0 = tim1_0_0 + tim1_0_2;
		    tre2_1_0 = tre1_0_0 - tre1_0_2;
		    tim2_1_0 = tim1_0_0 - tim1_0_2;
		    tre2_0_1 = tre1_0_1 + tre1_0_3;
		    tim2_0_1 = tim1_0_1 + tim1_0_3;
		    tre2_1_1 = tre1_0_1 - tre1_0_3;
		    tim2_1_1 = tim1_0_1 - tim1_0_3;
		    c_re(inout[0]) = tre2_0_0 + tre2_0_1;
		    c_im(inout[0]) = tim2_0_0 + tim2_0_1;
		    c_re(inout[16 * stride]) = tre2_0_0 - tre2_0_1;
		    c_im(inout[16 * stride]) = tim2_0_0 - tim2_0_1;
		    c_re(inout[8 * stride]) = tre2_1_0 + tim2_1_1;
		    c_im(inout[8 * stride]) = tim2_1_0 - tre2_1_1;
		    c_re(inout[24 * stride]) = tre2_1_0 - tim2_1_1;
		    c_im(inout[24 * stride]) = tim2_1_0 + tre2_1_1;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_1_0 + tim1_1_2;
		    tim2_0_0 = tim1_1_0 - tre1_1_2;
		    tre2_1_0 = tre1_1_0 - tim1_1_2;
		    tim2_1_0 = tim1_1_0 + tre1_1_2;
		    {
			 FFTW_REAL tre3_0_0;
			 FFTW_REAL tim3_0_0;
			 FFTW_REAL tre3_1_0;
			 FFTW_REAL tim3_1_0;
			 tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 + tim1_1_1);
			 tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 - tre1_1_1);
			 tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 - tre1_1_3);
			 tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 + tre1_1_3);
			 tre2_0_1 = tre3_0_0 + tre3_1_0;
			 tim2_0_1 = tim3_0_0 - tim3_1_0;
			 tre2_1_1 = tre3_0_0 - tre3_1_0;
			 tim2_1_1 = tim3_0_0 + tim3_1_0;
		    }
		    c_re(inout[4 * stride]) = tre2_0_0 + tre2_0_1;
		    c_im(inout[4 * stride]) = tim2_0_0 + tim2_0_1;
		    c_re(inout[20 * stride]) = tre2_0_0 - tre2_0_1;
		    c_im(inout[20 * stride]) = tim2_0_0 - tim2_0_1;
		    c_re(inout[12 * stride]) = tre2_1_0 + tim2_1_1;
		    c_im(inout[12 * stride]) = tim2_1_0 - tre2_1_1;
		    c_re(inout[28 * stride]) = tre2_1_0 - tim2_1_1;
		    c_im(inout[28 * stride]) = tim2_1_0 + tre2_1_1;
	       }
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_0_2;
	       FFTW_REAL tim1_0_2;
	       FFTW_REAL tre1_0_3;
	       FFTW_REAL tim1_0_3;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       FFTW_REAL tre1_1_2;
	       FFTW_REAL tim1_1_2;
	       FFTW_REAL tre1_1_3;
	       FFTW_REAL tim1_1_3;
	       {
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_1_4 + tim0_1_4);
		    tim2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_1_4 - tre0_1_4);
		    tre1_0_0 = tre0_1_0 + tre2_1_0;
		    tim1_0_0 = tim0_1_0 + tim2_1_0;
		    tre1_1_0 = tre0_1_0 - tre2_1_0;
		    tim1_1_0 = tim0_1_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K980785280) * tre0_1_1) + (((FFTW_REAL) FFTW_K195090322) * tim0_1_1);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K980785280) * tim0_1_1) - (((FFTW_REAL) FFTW_K195090322) * tre0_1_1);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K555570233) * tre0_1_5) + (((FFTW_REAL) FFTW_K831469612) * tim0_1_5);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K555570233) * tim0_1_5) - (((FFTW_REAL) FFTW_K831469612) * tre0_1_5);
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K923879532) * tre0_1_2) + (((FFTW_REAL) FFTW_K382683432) * tim0_1_2);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K923879532) * tim0_1_2) - (((FFTW_REAL) FFTW_K382683432) * tre0_1_2);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tre0_1_6) + (((FFTW_REAL) FFTW_K923879532) * tim0_1_6);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tim0_1_6) - (((FFTW_REAL) FFTW_K923879532) * tre0_1_6);
		    tre1_0_2 = tre2_0_0 + tre2_1_0;
		    tim1_0_2 = tim2_0_0 + tim2_1_0;
		    tre1_1_2 = tre2_0_0 - tre2_1_0;
		    tim1_1_2 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K831469612) * tre0_1_3) + (((FFTW_REAL) FFTW_K555570233) * tim0_1_3);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K831469612) * tim0_1_3) - (((FFTW_REAL) FFTW_K555570233) * tre0_1_3);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K195090322) * tre0_1_7) + (((FFTW_REAL) FFTW_K980785280) * tim0_1_7);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K195090322) * tim0_1_7) - (((FFTW_REAL) FFTW_K980785280) * tre0_1_7);
		    tre1_0_3 = tre2_0_0 + tre2_1_0;
		    tim1_0_3 = tim2_0_0 + tim2_1_0;
		    tre1_1_3 = tre2_0_0 - tre2_1_0;
		    tim1_1_3 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_0_0 + tre1_0_2;
		    tim2_0_0 = tim1_0_0 + tim1_0_2;
		    tre2_1_0 = tre1_0_0 - tre1_0_2;
		    tim2_1_0 = tim1_0_0 - tim1_0_2;
		    tre2_0_1 = tre1_0_1 + tre1_0_3;
		    tim2_0_1 = tim1_0_1 + tim1_0_3;
		    tre2_1_1 = tre1_0_1 - tre1_0_3;
		    tim2_1_1 = tim1_0_1 - tim1_0_3;
		    c_re(inout[stride]) = tre2_0_0 + tre2_0_1;
		    c_im(inout[stride]) = tim2_0_0 + tim2_0_1;
		    c_re(inout[17 * stride]) = tre2_0_0 - tre2_0_1;
		    c_im(inout[17 * stride]) = tim2_0_0 - tim2_0_1;
		    c_re(inout[9 * stride]) = tre2_1_0 + tim2_1_1;
		    c_im(inout[9 * stride]) = tim2_1_0 - tre2_1_1;
		    c_re(inout[25 * stride]) = tre2_1_0 - tim2_1_1;
		    c_im(inout[25 * stride]) = tim2_1_0 + tre2_1_1;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_1_0 + tim1_1_2;
		    tim2_0_0 = tim1_1_0 - tre1_1_2;
		    tre2_1_0 = tre1_1_0 - tim1_1_2;
		    tim2_1_0 = tim1_1_0 + tre1_1_2;
		    {
			 FFTW_REAL tre3_0_0;
			 FFTW_REAL tim3_0_0;
			 FFTW_REAL tre3_1_0;
			 FFTW_REAL tim3_1_0;
			 tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 + tim1_1_1);
			 tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 - tre1_1_1);
			 tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 - tre1_1_3);
			 tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 + tre1_1_3);
			 tre2_0_1 = tre3_0_0 + tre3_1_0;
			 tim2_0_1 = tim3_0_0 - tim3_1_0;
			 tre2_1_1 = tre3_0_0 - tre3_1_0;
			 tim2_1_1 = tim3_0_0 + tim3_1_0;
		    }
		    c_re(inout[5 * stride]) = tre2_0_0 + tre2_0_1;
		    c_im(inout[5 * stride]) = tim2_0_0 + tim2_0_1;
		    c_re(inout[21 * stride]) = tre2_0_0 - tre2_0_1;
		    c_im(inout[21 * stride]) = tim2_0_0 - tim2_0_1;
		    c_re(inout[13 * stride]) = tre2_1_0 + tim2_1_1;
		    c_im(inout[13 * stride]) = tim2_1_0 - tre2_1_1;
		    c_re(inout[29 * stride]) = tre2_1_0 - tim2_1_1;
		    c_im(inout[29 * stride]) = tim2_1_0 + tre2_1_1;
	       }
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_0_2;
	       FFTW_REAL tim1_0_2;
	       FFTW_REAL tre1_0_3;
	       FFTW_REAL tim1_0_3;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       FFTW_REAL tre1_1_2;
	       FFTW_REAL tim1_1_2;
	       FFTW_REAL tre1_1_3;
	       FFTW_REAL tim1_1_3;
	       tre1_0_0 = tre0_2_0 + tim0_2_4;
	       tim1_0_0 = tim0_2_0 - tre0_2_4;
	       tre1_1_0 = tre0_2_0 - tim0_2_4;
	       tim1_1_0 = tim0_2_0 + tre0_2_4;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K923879532) * tre0_2_1) + (((FFTW_REAL) FFTW_K382683432) * tim0_2_1);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K923879532) * tim0_2_1) - (((FFTW_REAL) FFTW_K382683432) * tre0_2_1);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K923879532) * tim0_2_5) - (((FFTW_REAL) FFTW_K382683432) * tre0_2_5);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tim0_2_5) + (((FFTW_REAL) FFTW_K923879532) * tre0_2_5);
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 - tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 + tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_2_2 + tim0_2_2);
		    tim2_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_2_2 - tre0_2_2);
		    tre2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_2_6 - tre0_2_6);
		    tim2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_2_6 + tre0_2_6);
		    tre1_0_2 = tre2_0_0 + tre2_1_0;
		    tim1_0_2 = tim2_0_0 - tim2_1_0;
		    tre1_1_2 = tre2_0_0 - tre2_1_0;
		    tim1_1_2 = tim2_0_0 + tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K382683432) * tre0_2_3) + (((FFTW_REAL) FFTW_K923879532) * tim0_2_3);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K382683432) * tim0_2_3) - (((FFTW_REAL) FFTW_K923879532) * tre0_2_3);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tim0_2_7) - (((FFTW_REAL) FFTW_K923879532) * tre0_2_7);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K923879532) * tim0_2_7) + (((FFTW_REAL) FFTW_K382683432) * tre0_2_7);
		    tre1_0_3 = tre2_0_0 + tre2_1_0;
		    tim1_0_3 = tim2_0_0 - tim2_1_0;
		    tre1_1_3 = tre2_0_0 - tre2_1_0;
		    tim1_1_3 = tim2_0_0 + tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_0_0 + tre1_0_2;
		    tim2_0_0 = tim1_0_0 + tim1_0_2;
		    tre2_1_0 = tre1_0_0 - tre1_0_2;
		    tim2_1_0 = tim1_0_0 - tim1_0_2;
		    tre2_0_1 = tre1_0_1 + tre1_0_3;
		    tim2_0_1 = tim1_0_1 + tim1_0_3;
		    tre2_1_1 = tre1_0_1 - tre1_0_3;
		    tim2_1_1 = tim1_0_1 - tim1_0_3;
		    c_re(inout[2 * stride]) = tre2_0_0 + tre2_0_1;
		    c_im(inout[2 * stride]) = tim2_0_0 + tim2_0_1;
		    c_re(inout[18 * stride]) = tre2_0_0 - tre2_0_1;
		    c_im(inout[18 * stride]) = tim2_0_0 - tim2_0_1;
		    c_re(inout[10 * stride]) = tre2_1_0 + tim2_1_1;
		    c_im(inout[10 * stride]) = tim2_1_0 - tre2_1_1;
		    c_re(inout[26 * stride]) = tre2_1_0 - tim2_1_1;
		    c_im(inout[26 * stride]) = tim2_1_0 + tre2_1_1;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_1_0 + tim1_1_2;
		    tim2_0_0 = tim1_1_0 - tre1_1_2;
		    tre2_1_0 = tre1_1_0 - tim1_1_2;
		    tim2_1_0 = tim1_1_0 + tre1_1_2;
		    {
			 FFTW_REAL tre3_0_0;
			 FFTW_REAL tim3_0_0;
			 FFTW_REAL tre3_1_0;
			 FFTW_REAL tim3_1_0;
			 tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 + tim1_1_1);
			 tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 - tre1_1_1);
			 tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 - tre1_1_3);
			 tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 + tre1_1_3);
			 tre2_0_1 = tre3_0_0 + tre3_1_0;
			 tim2_0_1 = tim3_0_0 - tim3_1_0;
			 tre2_1_1 = tre3_0_0 - tre3_1_0;
			 tim2_1_1 = tim3_0_0 + tim3_1_0;
		    }
		    c_re(inout[6 * stride]) = tre2_0_0 + tre2_0_1;
		    c_im(inout[6 * stride]) = tim2_0_0 + tim2_0_1;
		    c_re(inout[22 * stride]) = tre2_0_0 - tre2_0_1;
		    c_im(inout[22 * stride]) = tim2_0_0 - tim2_0_1;
		    c_re(inout[14 * stride]) = tre2_1_0 + tim2_1_1;
		    c_im(inout[14 * stride]) = tim2_1_0 - tre2_1_1;
		    c_re(inout[30 * stride]) = tre2_1_0 - tim2_1_1;
		    c_im(inout[30 * stride]) = tim2_1_0 + tre2_1_1;
	       }
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_0_2;
	       FFTW_REAL tim1_0_2;
	       FFTW_REAL tre1_0_3;
	       FFTW_REAL tim1_0_3;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       FFTW_REAL tre1_1_2;
	       FFTW_REAL tim1_1_2;
	       FFTW_REAL tre1_1_3;
	       FFTW_REAL tim1_1_3;
	       {
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_3_4 - tre0_3_4);
		    tim2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_3_4 + tre0_3_4);
		    tre1_0_0 = tre0_3_0 + tre2_1_0;
		    tim1_0_0 = tim0_3_0 - tim2_1_0;
		    tre1_1_0 = tre0_3_0 - tre2_1_0;
		    tim1_1_0 = tim0_3_0 + tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K831469612) * tre0_3_1) + (((FFTW_REAL) FFTW_K555570233) * tim0_3_1);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K831469612) * tim0_3_1) - (((FFTW_REAL) FFTW_K555570233) * tre0_3_1);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K195090322) * tim0_3_5) - (((FFTW_REAL) FFTW_K980785280) * tre0_3_5);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K980785280) * tim0_3_5) + (((FFTW_REAL) FFTW_K195090322) * tre0_3_5);
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 - tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 + tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K382683432) * tre0_3_2) + (((FFTW_REAL) FFTW_K923879532) * tim0_3_2);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K382683432) * tim0_3_2) - (((FFTW_REAL) FFTW_K923879532) * tre0_3_2);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K923879532) * tre0_3_6) + (((FFTW_REAL) FFTW_K382683432) * tim0_3_6);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tre0_3_6) - (((FFTW_REAL) FFTW_K923879532) * tim0_3_6);
		    tre1_0_2 = tre2_0_0 - tre2_1_0;
		    tim1_0_2 = tim2_0_0 + tim2_1_0;
		    tre1_1_2 = tre2_0_0 + tre2_1_0;
		    tim1_1_2 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K980785280) * tim0_3_3) - (((FFTW_REAL) FFTW_K195090322) * tre0_3_3);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K195090322) * tim0_3_3) + (((FFTW_REAL) FFTW_K980785280) * tre0_3_3);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K555570233) * tre0_3_7) + (((FFTW_REAL) FFTW_K831469612) * tim0_3_7);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K831469612) * tre0_3_7) - (((FFTW_REAL) FFTW_K555570233) * tim0_3_7);
		    tre1_0_3 = tre2_0_0 - tre2_1_0;
		    tim1_0_3 = tim2_1_0 - tim2_0_0;
		    tre1_1_3 = tre2_0_0 + tre2_1_0;
		    tim1_1_3 = (-(tim2_0_0 + tim2_1_0));
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_0_0 + tre1_0_2;
		    tim2_0_0 = tim1_0_0 + tim1_0_2;
		    tre2_1_0 = tre1_0_0 - tre1_0_2;
		    tim2_1_0 = tim1_0_0 - tim1_0_2;
		    tre2_0_1 = tre1_0_1 + tre1_0_3;
		    tim2_0_1 = tim1_0_1 + tim1_0_3;
		    tre2_1_1 = tre1_0_1 - tre1_0_3;
		    tim2_1_1 = tim1_0_1 - tim1_0_3;
		    c_re(inout[3 * stride]) = tre2_0_0 + tre2_0_1;
		    c_im(inout[3 * stride]) = tim2_0_0 + tim2_0_1;
		    c_re(inout[19 * stride]) = tre2_0_0 - tre2_0_1;
		    c_im(inout[19 * stride]) = tim2_0_0 - tim2_0_1;
		    c_re(inout[11 * stride]) = tre2_1_0 + tim2_1_1;
		    c_im(inout[11 * stride]) = tim2_1_0 - tre2_1_1;
		    c_re(inout[27 * stride]) = tre2_1_0 - tim2_1_1;
		    c_im(inout[27 * stride]) = tim2_1_0 + tre2_1_1;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_1_0 + tim1_1_2;
		    tim2_0_0 = tim1_1_0 - tre1_1_2;
		    tre2_1_0 = tre1_1_0 - tim1_1_2;
		    tim2_1_0 = tim1_1_0 + tre1_1_2;
		    {
			 FFTW_REAL tre3_0_0;
			 FFTW_REAL tim3_0_0;
			 FFTW_REAL tre3_1_0;
			 FFTW_REAL tim3_1_0;
			 tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 + tim1_1_1);
			 tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 - tre1_1_1);
			 tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 - tre1_1_3);
			 tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 + tre1_1_3);
			 tre2_0_1 = tre3_0_0 + tre3_1_0;
			 tim2_0_1 = tim3_0_0 - tim3_1_0;
			 tre2_1_1 = tre3_0_0 - tre3_1_0;
			 tim2_1_1 = tim3_0_0 + tim3_1_0;
		    }
		    c_re(inout[7 * stride]) = tre2_0_0 + tre2_0_1;
		    c_im(inout[7 * stride]) = tim2_0_0 + tim2_0_1;
		    c_re(inout[23 * stride]) = tre2_0_0 - tre2_0_1;
		    c_im(inout[23 * stride]) = tim2_0_0 - tim2_0_1;
		    c_re(inout[15 * stride]) = tre2_1_0 + tim2_1_1;
		    c_im(inout[15 * stride]) = tim2_1_0 - tre2_1_1;
		    c_re(inout[31 * stride]) = tre2_1_0 - tim2_1_1;
		    c_im(inout[31 * stride]) = tim2_1_0 + tre2_1_1;
	       }
	  }
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 22 FP additions and 12 FP multiplications */

void fftw_twiddle_4(FFTW_COMPLEX *A, const FFTW_COMPLEX *W, int stride, int m, int dist)
{
     int i;
     COMPLEX *inout;
     inout = A;
     for (i = 0; i < m; i = i + 1, inout = inout + dist, W = W + 3) {
	  FFTW_REAL tre0_0_0;
	  FFTW_REAL tim0_0_0;
	  FFTW_REAL tre0_0_1;
	  FFTW_REAL tim0_0_1;
	  FFTW_REAL tre0_1_0;
	  FFTW_REAL tim0_1_0;
	  FFTW_REAL tre0_1_1;
	  FFTW_REAL tim0_1_1;
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       tre1_0_0 = c_re(inout[0]);
	       tim1_0_0 = c_im(inout[0]);
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[2 * stride]);
		    ti = c_im(inout[2 * stride]);
		    twr = c_re(W[1]);
		    twi = c_im(W[1]);
		    tre1_1_0 = (tr * twr) - (ti * twi);
		    tim1_1_0 = (tr * twi) + (ti * twr);
	       }
	       tre0_0_0 = tre1_0_0 + tre1_1_0;
	       tim0_0_0 = tim1_0_0 + tim1_1_0;
	       tre0_1_0 = tre1_0_0 - tre1_1_0;
	       tim0_1_0 = tim1_0_0 - tim1_1_0;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[stride]);
		    ti = c_im(inout[stride]);
		    twr = c_re(W[0]);
		    twi = c_im(W[0]);
		    tre1_0_0 = (tr * twr) - (ti * twi);
		    tim1_0_0 = (tr * twi) + (ti * twr);
	       }
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[3 * stride]);
		    ti = c_im(inout[3 * stride]);
		    twr = c_re(W[2]);
		    twi = c_im(W[2]);
		    tre1_1_0 = (tr * twr) - (ti * twi);
		    tim1_1_0 = (tr * twi) + (ti * twr);
	       }
	       tre0_0_1 = tre1_0_0 + tre1_1_0;
	       tim0_0_1 = tim1_0_0 + tim1_1_0;
	       tre0_1_1 = tre1_0_0 - tre1_1_0;
	       tim0_1_1 = tim1_0_0 - tim1_1_0;
	  }
	  c_re(inout[0]) = tre0_0_0 + tre0_0_1;
	  c_im(inout[0]) = tim0_0_0 + tim0_0_1;
	  c_re(inout[2 * stride]) = tre0_0_0 - tre0_0_1;
	  c_im(inout[2 * stride]) = tim0_0_0 - tim0_0_1;
	  c_re(inout[stride]) = tre0_1_0 + tim0_1_1;
	  c_im(inout[stride]) = tim0_1_0 - tre0_1_1;
	  c_re(inout[3 * stride]) = tre0_1_0 - tim0_1_1;
	  c_im(inout[3 * stride]) = tim0_1_0 + tre0_1_1;
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 52 FP additions and 32 FP multiplications */

void fftw_twiddle_5(FFTW_COMPLEX *A, const FFTW_COMPLEX *W, int stride, int m, int dist)
{
     int i;
     COMPLEX *inout;
     inout = A;
     for (i = 0; i < m; i = i + 1, inout = inout + dist, W = W + 4) {
	  FFTW_REAL tre0_0_0;
	  FFTW_REAL tim0_0_0;
	  FFTW_REAL tre0_1_0;
	  FFTW_REAL tim0_1_0;
	  FFTW_REAL tre0_2_0;
	  FFTW_REAL tim0_2_0;
	  FFTW_REAL tre0_3_0;
	  FFTW_REAL tim0_3_0;
	  FFTW_REAL tre0_4_0;
	  FFTW_REAL tim0_4_0;
	  tre0_0_0 = c_re(inout[0]);
	  tim0_0_0 = c_im(inout[0]);
	  {
	       FFTW_REAL tr;
	       FFTW_REAL ti;
	       FFTW_REAL twr;
	       FFTW_REAL twi;
	       tr = c_re(inout[stride]);
	       ti = c_im(inout[stride]);
	       twr = c_re(W[0]);
	       twi = c_im(W[0]);
	       tre0_1_0 = (tr * twr) - (ti * twi);
	       tim0_1_0 = (tr * twi) + (ti * twr);
	  }
	  {
	       FFTW_REAL tr;
	       FFTW_REAL ti;
	       FFTW_REAL twr;
	       FFTW_REAL twi;
	       tr = c_re(inout[2 * stride]);
	       ti = c_im(inout[2 * stride]);
	       twr = c_re(W[1]);
	       twi = c_im(W[1]);
	       tre0_2_0 = (tr * twr) - (ti * twi);
	       tim0_2_0 = (tr * twi) + (ti * twr);
	  }
	  {
	       FFTW_REAL tr;
	       FFTW_REAL ti;
	       FFTW_REAL twr;
	       FFTW_REAL twi;
	       tr = c_re(inout[3 * stride]);
	       ti = c_im(inout[3 * stride]);
	       twr = c_re(W[2]);
	       twi = c_im(W[2]);
	       tre0_3_0 = (tr * twr) - (ti * twi);
	       tim0_3_0 = (tr * twi) + (ti * twr);
	  }
	  {
	       FFTW_REAL tr;
	       FFTW_REAL ti;
	       FFTW_REAL twr;
	       FFTW_REAL twi;
	       tr = c_re(inout[4 * stride]);
	       ti = c_im(inout[4 * stride]);
	       twr = c_re(W[3]);
	       twi = c_im(W[3]);
	       tre0_4_0 = (tr * twr) - (ti * twi);
	       tim0_4_0 = (tr * twi) + (ti * twr);
	  }
	  c_re(inout[0]) = tre0_0_0 + tre0_1_0 + tre0_2_0 + tre0_3_0 + tre0_4_0;
	  c_im(inout[0]) = tim0_0_0 + tim0_1_0 + tim0_2_0 + tim0_3_0 + tim0_4_0;
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tre1_1_0;
	       tre1_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K309016994) * (tre0_1_0 + tre0_4_0)) - (((FFTW_REAL) FFTW_K809016994) * (tre0_2_0 + tre0_3_0));
	       tre1_1_0 = (((FFTW_REAL) FFTW_K951056516) * (tim0_1_0 - tim0_4_0)) + (((FFTW_REAL) FFTW_K587785252) * (tim0_2_0 - tim0_3_0));
	       c_re(inout[stride]) = tre1_0_0 + tre1_1_0;
	       c_re(inout[4 * stride]) = tre1_0_0 - tre1_1_0;
	  }
	  {
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tim1_1_0;
	       tim1_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K309016994) * (tim0_1_0 + tim0_4_0)) - (((FFTW_REAL) FFTW_K809016994) * (tim0_2_0 + tim0_3_0));
	       tim1_1_0 = (((FFTW_REAL) FFTW_K951056516) * (tre0_4_0 - tre0_1_0)) + (((FFTW_REAL) FFTW_K587785252) * (tre0_3_0 - tre0_2_0));
	       c_im(inout[stride]) = tim1_0_0 + tim1_1_0;
	       c_im(inout[4 * stride]) = tim1_0_0 - tim1_1_0;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tre1_1_0;
	       tre1_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K309016994) * (tre0_2_0 + tre0_3_0)) - (((FFTW_REAL) FFTW_K809016994) * (tre0_1_0 + tre0_4_0));
	       tre1_1_0 = (((FFTW_REAL) FFTW_K587785252) * (tim0_1_0 - tim0_4_0)) + (((FFTW_REAL) FFTW_K951056516) * (tim0_3_0 - tim0_2_0));
	       c_re(inout[2 * stride]) = tre1_0_0 + tre1_1_0;
	       c_re(inout[3 * stride]) = tre1_0_0 - tre1_1_0;
	  }
	  {
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tim1_1_0;
	       tim1_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K309016994) * (tim0_2_0 + tim0_3_0)) - (((FFTW_REAL) FFTW_K809016994) * (tim0_1_0 + tim0_4_0));
	       tim1_1_0 = (((FFTW_REAL) FFTW_K587785252) * (tre0_4_0 - tre0_1_0)) + (((FFTW_REAL) FFTW_K951056516) * (tre0_2_0 - tre0_3_0));
	       c_im(inout[2 * stride]) = tim1_0_0 + tim1_1_0;
	       c_im(inout[3 * stride]) = tim1_0_0 - tim1_1_0;
	  }
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 50 FP additions and 28 FP multiplications */

void fftw_twiddle_6(FFTW_COMPLEX *A, const FFTW_COMPLEX *W, int stride, int m, int dist)
{
     int i;
     COMPLEX *inout;
     inout = A;
     for (i = 0; i < m; i = i + 1, inout = inout + dist, W = W + 5) {
	  FFTW_REAL tre0_0_0;
	  FFTW_REAL tim0_0_0;
	  FFTW_REAL tre0_0_1;
	  FFTW_REAL tim0_0_1;
	  FFTW_REAL tre0_0_2;
	  FFTW_REAL tim0_0_2;
	  FFTW_REAL tre0_1_0;
	  FFTW_REAL tim0_1_0;
	  FFTW_REAL tre0_1_1;
	  FFTW_REAL tim0_1_1;
	  FFTW_REAL tre0_1_2;
	  FFTW_REAL tim0_1_2;
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       tre1_0_0 = c_re(inout[0]);
	       tim1_0_0 = c_im(inout[0]);
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[3 * stride]);
		    ti = c_im(inout[3 * stride]);
		    twr = c_re(W[2]);
		    twi = c_im(W[2]);
		    tre1_1_0 = (tr * twr) - (ti * twi);
		    tim1_1_0 = (tr * twi) + (ti * twr);
	       }
	       tre0_0_0 = tre1_0_0 + tre1_1_0;
	       tim0_0_0 = tim1_0_0 + tim1_1_0;
	       tre0_1_0 = tre1_0_0 - tre1_1_0;
	       tim0_1_0 = tim1_0_0 - tim1_1_0;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[2 * stride]);
		    ti = c_im(inout[2 * stride]);
		    twr = c_re(W[1]);
		    twi = c_im(W[1]);
		    tre1_0_0 = (tr * twr) - (ti * twi);
		    tim1_0_0 = (tr * twi) + (ti * twr);
	       }
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[5 * stride]);
		    ti = c_im(inout[5 * stride]);
		    twr = c_re(W[4]);
		    twi = c_im(W[4]);
		    tre1_1_0 = (tr * twr) - (ti * twi);
		    tim1_1_0 = (tr * twi) + (ti * twr);
	       }
	       tre0_0_1 = tre1_0_0 + tre1_1_0;
	       tim0_0_1 = tim1_0_0 + tim1_1_0;
	       tre0_1_1 = tre1_0_0 - tre1_1_0;
	       tim0_1_1 = tim1_0_0 - tim1_1_0;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[4 * stride]);
		    ti = c_im(inout[4 * stride]);
		    twr = c_re(W[3]);
		    twi = c_im(W[3]);
		    tre1_0_0 = (tr * twr) - (ti * twi);
		    tim1_0_0 = (tr * twi) + (ti * twr);
	       }
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[stride]);
		    ti = c_im(inout[stride]);
		    twr = c_re(W[0]);
		    twi = c_im(W[0]);
		    tre1_1_0 = (tr * twr) - (ti * twi);
		    tim1_1_0 = (tr * twi) + (ti * twr);
	       }
	       tre0_0_2 = tre1_0_0 + tre1_1_0;
	       tim0_0_2 = tim1_0_0 + tim1_1_0;
	       tre0_1_2 = tre1_0_0 - tre1_1_0;
	       tim0_1_2 = tim1_0_0 - tim1_1_0;
	  }
	  c_re(inout[0]) = tre0_0_0 + tre0_0_1 + tre0_0_2;
	  c_im(inout[0]) = tim0_0_0 + tim0_0_1 + tim0_0_2;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tre2_1_0;
	       tre2_0_0 = tre0_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tre0_0_1 + tre0_0_2));
	       tre2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tim0_0_1 - tim0_0_2);
	       c_re(inout[4 * stride]) = tre2_0_0 + tre2_1_0;
	       c_re(inout[2 * stride]) = tre2_0_0 - tre2_1_0;
	  }
	  {
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tim2_1_0;
	       tim2_0_0 = tim0_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tim0_0_1 + tim0_0_2));
	       tim2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tre0_0_2 - tre0_0_1);
	       c_im(inout[4 * stride]) = tim2_0_0 + tim2_1_0;
	       c_im(inout[2 * stride]) = tim2_0_0 - tim2_1_0;
	  }
	  c_re(inout[3 * stride]) = tre0_1_0 + tre0_1_1 + tre0_1_2;
	  c_im(inout[3 * stride]) = tim0_1_0 + tim0_1_1 + tim0_1_2;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tre2_1_0;
	       tre2_0_0 = tre0_1_0 - (((FFTW_REAL) FFTW_K499999999) * (tre0_1_1 + tre0_1_2));
	       tre2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tim0_1_1 - tim0_1_2);
	       c_re(inout[stride]) = tre2_0_0 + tre2_1_0;
	       c_re(inout[5 * stride]) = tre2_0_0 - tre2_1_0;
	  }
	  {
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tim2_1_0;
	       tim2_0_0 = tim0_1_0 - (((FFTW_REAL) FFTW_K499999999) * (tim0_1_1 + tim0_1_2));
	       tim2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tre0_1_2 - tre0_1_1);
	       c_im(inout[stride]) = tim2_0_0 + tim2_1_0;
	       c_im(inout[5 * stride]) = tim2_0_0 - tim2_1_0;
	  }
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 1054 FP additions and 500 FP multiplications */

void fftw_twiddle_64(FFTW_COMPLEX *A, const FFTW_COMPLEX *W, int stride, int m, int dist)
{
     int i;
     COMPLEX *inout;
     inout = A;
     for (i = 0; i < m; i = i + 1, inout = inout + dist, W = W + 63) {
	  FFTW_REAL tre0_0_0;
	  FFTW_REAL tim0_0_0;
	  FFTW_REAL tre0_0_1;
	  FFTW_REAL tim0_0_1;
	  FFTW_REAL tre0_0_2;
	  FFTW_REAL tim0_0_2;
	  FFTW_REAL tre0_0_3;
	  FFTW_REAL tim0_0_3;
	  FFTW_REAL tre0_0_4;
	  FFTW_REAL tim0_0_4;
	  FFTW_REAL tre0_0_5;
	  FFTW_REAL tim0_0_5;
	  FFTW_REAL tre0_0_6;
	  FFTW_REAL tim0_0_6;
	  FFTW_REAL tre0_0_7;
	  FFTW_REAL tim0_0_7;
	  FFTW_REAL tre0_1_0;
	  FFTW_REAL tim0_1_0;
	  FFTW_REAL tre0_1_1;
	  FFTW_REAL tim0_1_1;
	  FFTW_REAL tre0_1_2;
	  FFTW_REAL tim0_1_2;
	  FFTW_REAL tre0_1_3;
	  FFTW_REAL tim0_1_3;
	  FFTW_REAL tre0_1_4;
	  FFTW_REAL tim0_1_4;
	  FFTW_REAL tre0_1_5;
	  FFTW_REAL tim0_1_5;
	  FFTW_REAL tre0_1_6;
	  FFTW_REAL tim0_1_6;
	  FFTW_REAL tre0_1_7;
	  FFTW_REAL tim0_1_7;
	  FFTW_REAL tre0_2_0;
	  FFTW_REAL tim0_2_0;
	  FFTW_REAL tre0_2_1;
	  FFTW_REAL tim0_2_1;
	  FFTW_REAL tre0_2_2;
	  FFTW_REAL tim0_2_2;
	  FFTW_REAL tre0_2_3;
	  FFTW_REAL tim0_2_3;
	  FFTW_REAL tre0_2_4;
	  FFTW_REAL tim0_2_4;
	  FFTW_REAL tre0_2_5;
	  FFTW_REAL tim0_2_5;
	  FFTW_REAL tre0_2_6;
	  FFTW_REAL tim0_2_6;
	  FFTW_REAL tre0_2_7;
	  FFTW_REAL tim0_2_7;
	  FFTW_REAL tre0_3_0;
	  FFTW_REAL tim0_3_0;
	  FFTW_REAL tre0_3_1;
	  FFTW_REAL tim0_3_1;
	  FFTW_REAL tre0_3_2;
	  FFTW_REAL tim0_3_2;
	  FFTW_REAL tre0_3_3;
	  FFTW_REAL tim0_3_3;
	  FFTW_REAL tre0_3_4;
	  FFTW_REAL tim0_3_4;
	  FFTW_REAL tre0_3_5;
	  FFTW_REAL tim0_3_5;
	  FFTW_REAL tre0_3_6;
	  FFTW_REAL tim0_3_6;
	  FFTW_REAL tre0_3_7;
	  FFTW_REAL tim0_3_7;
	  FFTW_REAL tre0_4_0;
	  FFTW_REAL tim0_4_0;
	  FFTW_REAL tre0_4_1;
	  FFTW_REAL tim0_4_1;
	  FFTW_REAL tre0_4_2;
	  FFTW_REAL tim0_4_2;
	  FFTW_REAL tre0_4_3;
	  FFTW_REAL tim0_4_3;
	  FFTW_REAL tre0_4_4;
	  FFTW_REAL tim0_4_4;
	  FFTW_REAL tre0_4_5;
	  FFTW_REAL tim0_4_5;
	  FFTW_REAL tre0_4_6;
	  FFTW_REAL tim0_4_6;
	  FFTW_REAL tre0_4_7;
	  FFTW_REAL tim0_4_7;
	  FFTW_REAL tre0_5_0;
	  FFTW_REAL tim0_5_0;
	  FFTW_REAL tre0_5_1;
	  FFTW_REAL tim0_5_1;
	  FFTW_REAL tre0_5_2;
	  FFTW_REAL tim0_5_2;
	  FFTW_REAL tre0_5_3;
	  FFTW_REAL tim0_5_3;
	  FFTW_REAL tre0_5_4;
	  FFTW_REAL tim0_5_4;
	  FFTW_REAL tre0_5_5;
	  FFTW_REAL tim0_5_5;
	  FFTW_REAL tre0_5_6;
	  FFTW_REAL tim0_5_6;
	  FFTW_REAL tre0_5_7;
	  FFTW_REAL tim0_5_7;
	  FFTW_REAL tre0_6_0;
	  FFTW_REAL tim0_6_0;
	  FFTW_REAL tre0_6_1;
	  FFTW_REAL tim0_6_1;
	  FFTW_REAL tre0_6_2;
	  FFTW_REAL tim0_6_2;
	  FFTW_REAL tre0_6_3;
	  FFTW_REAL tim0_6_3;
	  FFTW_REAL tre0_6_4;
	  FFTW_REAL tim0_6_4;
	  FFTW_REAL tre0_6_5;
	  FFTW_REAL tim0_6_5;
	  FFTW_REAL tre0_6_6;
	  FFTW_REAL tim0_6_6;
	  FFTW_REAL tre0_6_7;
	  FFTW_REAL tim0_6_7;
	  FFTW_REAL tre0_7_0;
	  FFTW_REAL tim0_7_0;
	  FFTW_REAL tre0_7_1;
	  FFTW_REAL tim0_7_1;
	  FFTW_REAL tre0_7_2;
	  FFTW_REAL tim0_7_2;
	  FFTW_REAL tre0_7_3;
	  FFTW_REAL tim0_7_3;
	  FFTW_REAL tre0_7_4;
	  FFTW_REAL tim0_7_4;
	  FFTW_REAL tre0_7_5;
	  FFTW_REAL tim0_7_5;
	  FFTW_REAL tre0_7_6;
	  FFTW_REAL tim0_7_6;
	  FFTW_REAL tre0_7_7;
	  FFTW_REAL tim0_7_7;
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_0_2;
	       FFTW_REAL tim1_0_2;
	       FFTW_REAL tre1_0_3;
	       FFTW_REAL tim1_0_3;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       FFTW_REAL tre1_1_2;
	       FFTW_REAL tim1_1_2;
	       FFTW_REAL tre1_1_3;
	       FFTW_REAL tim1_1_3;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = c_re(inout[0]);
		    tim2_0_0 = c_im(inout[0]);
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[32 * stride]);
			 ti = c_im(inout[32 * stride]);
			 twr = c_re(W[31]);
			 twi = c_im(W[31]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_0 = tre2_0_0 + tre2_1_0;
		    tim1_0_0 = tim2_0_0 + tim2_1_0;
		    tre1_1_0 = tre2_0_0 - tre2_1_0;
		    tim1_1_0 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[8 * stride]);
			 ti = c_im(inout[8 * stride]);
			 twr = c_re(W[7]);
			 twi = c_im(W[7]);
			 tre2_0_0 = (tr * twr) - (ti * twi);
			 tim2_0_0 = (tr * twi) + (ti * twr);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[40 * stride]);
			 ti = c_im(inout[40 * stride]);
			 twr = c_re(W[39]);
			 twi = c_im(W[39]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[16 * stride]);
			 ti = c_im(inout[16 * stride]);
			 twr = c_re(W[15]);
			 twi = c_im(W[15]);
			 tre2_0_0 = (tr * twr) - (ti * twi);
			 tim2_0_0 = (tr * twi) + (ti * twr);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[48 * stride]);
			 ti = c_im(inout[48 * stride]);
			 twr = c_re(W[47]);
			 twi = c_im(W[47]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_2 = tre2_0_0 + tre2_1_0;
		    tim1_0_2 = tim2_0_0 + tim2_1_0;
		    tre1_1_2 = tre2_0_0 - tre2_1_0;
		    tim1_1_2 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[24 * stride]);
			 ti = c_im(inout[24 * stride]);
			 twr = c_re(W[23]);
			 twi = c_im(W[23]);
			 tre2_0_0 = (tr * twr) - (ti * twi);
			 tim2_0_0 = (tr * twi) + (ti * twr);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[56 * stride]);
			 ti = c_im(inout[56 * stride]);
			 twr = c_re(W[55]);
			 twi = c_im(W[55]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_3 = tre2_0_0 + tre2_1_0;
		    tim1_0_3 = tim2_0_0 + tim2_1_0;
		    tre1_1_3 = tre2_0_0 - tre2_1_0;
		    tim1_1_3 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_0_0 + tre1_0_2;
		    tim2_0_0 = tim1_0_0 + tim1_0_2;
		    tre2_1_0 = tre1_0_0 - tre1_0_2;
		    tim2_1_0 = tim1_0_0 - tim1_0_2;
		    tre2_0_1 = tre1_0_1 + tre1_0_3;
		    tim2_0_1 = tim1_0_1 + tim1_0_3;
		    tre2_1_1 = tre1_0_1 - tre1_0_3;
		    tim2_1_1 = tim1_0_1 - tim1_0_3;
		    tre0_0_0 = tre2_0_0 + tre2_0_1;
		    tim0_0_0 = tim2_0_0 + tim2_0_1;
		    tre0_4_0 = tre2_0_0 - tre2_0_1;
		    tim0_4_0 = tim2_0_0 - tim2_0_1;
		    tre0_2_0 = tre2_1_0 + tim2_1_1;
		    tim0_2_0 = tim2_1_0 - tre2_1_1;
		    tre0_6_0 = tre2_1_0 - tim2_1_1;
		    tim0_6_0 = tim2_1_0 + tre2_1_1;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_1_0 + tim1_1_2;
		    tim2_0_0 = tim1_1_0 - tre1_1_2;
		    tre2_1_0 = tre1_1_0 - tim1_1_2;
		    tim2_1_0 = tim1_1_0 + tre1_1_2;
		    {
			 FFTW_REAL tre3_0_0;
			 FFTW_REAL tim3_0_0;
			 FFTW_REAL tre3_1_0;
			 FFTW_REAL tim3_1_0;
			 tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 + tim1_1_1);
			 tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 - tre1_1_1);
			 tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 - tre1_1_3);
			 tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 + tre1_1_3);
			 tre2_0_1 = tre3_0_0 + tre3_1_0;
			 tim2_0_1 = tim3_0_0 - tim3_1_0;
			 tre2_1_1 = tre3_0_0 - tre3_1_0;
			 tim2_1_1 = tim3_0_0 + tim3_1_0;
		    }
		    tre0_1_0 = tre2_0_0 + tre2_0_1;
		    tim0_1_0 = tim2_0_0 + tim2_0_1;
		    tre0_5_0 = tre2_0_0 - tre2_0_1;
		    tim0_5_0 = tim2_0_0 - tim2_0_1;
		    tre0_3_0 = tre2_1_0 + tim2_1_1;
		    tim0_3_0 = tim2_1_0 - tre2_1_1;
		    tre0_7_0 = tre2_1_0 - tim2_1_1;
		    tim0_7_0 = tim2_1_0 + tre2_1_1;
	       }
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_0_2;
	       FFTW_REAL tim1_0_2;
	       FFTW_REAL tre1_0_3;
	       FFTW_REAL tim1_0_3;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       FFTW_REAL tre1_1_2;
	       FFTW_REAL tim1_1_2;
	       FFTW_REAL tre1_1_3;
	       FFTW_REAL tim1_1_3;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[stride]);
			 ti = c_im(inout[stride]);
			 twr = c_re(W[0]);
			 twi = c_im(W[0]);
			 tre2_0_0 = (tr * twr) - (ti * twi);
			 tim2_0_0 = (tr * twi) + (ti * twr);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[33 * stride]);
			 ti = c_im(inout[33 * stride]);
			 twr = c_re(W[32]);
			 twi = c_im(W[32]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_0 = tre2_0_0 + tre2_1_0;
		    tim1_0_0 = tim2_0_0 + tim2_1_0;
		    tre1_1_0 = tre2_0_0 - tre2_1_0;
		    tim1_1_0 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[9 * stride]);
			 ti = c_im(inout[9 * stride]);
			 twr = c_re(W[8]);
			 twi = c_im(W[8]);
			 tre2_0_0 = (tr * twr) - (ti * twi);
			 tim2_0_0 = (tr * twi) + (ti * twr);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[41 * stride]);
			 ti = c_im(inout[41 * stride]);
			 twr = c_re(W[40]);
			 twi = c_im(W[40]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[17 * stride]);
			 ti = c_im(inout[17 * stride]);
			 twr = c_re(W[16]);
			 twi = c_im(W[16]);
			 tre2_0_0 = (tr * twr) - (ti * twi);
			 tim2_0_0 = (tr * twi) + (ti * twr);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[49 * stride]);
			 ti = c_im(inout[49 * stride]);
			 twr = c_re(W[48]);
			 twi = c_im(W[48]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_2 = tre2_0_0 + tre2_1_0;
		    tim1_0_2 = tim2_0_0 + tim2_1_0;
		    tre1_1_2 = tre2_0_0 - tre2_1_0;
		    tim1_1_2 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[25 * stride]);
			 ti = c_im(inout[25 * stride]);
			 twr = c_re(W[24]);
			 twi = c_im(W[24]);
			 tre2_0_0 = (tr * twr) - (ti * twi);
			 tim2_0_0 = (tr * twi) + (ti * twr);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[57 * stride]);
			 ti = c_im(inout[57 * stride]);
			 twr = c_re(W[56]);
			 twi = c_im(W[56]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_3 = tre2_0_0 + tre2_1_0;
		    tim1_0_3 = tim2_0_0 + tim2_1_0;
		    tre1_1_3 = tre2_0_0 - tre2_1_0;
		    tim1_1_3 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_0_0 + tre1_0_2;
		    tim2_0_0 = tim1_0_0 + tim1_0_2;
		    tre2_1_0 = tre1_0_0 - tre1_0_2;
		    tim2_1_0 = tim1_0_0 - tim1_0_2;
		    tre2_0_1 = tre1_0_1 + tre1_0_3;
		    tim2_0_1 = tim1_0_1 + tim1_0_3;
		    tre2_1_1 = tre1_0_1 - tre1_0_3;
		    tim2_1_1 = tim1_0_1 - tim1_0_3;
		    tre0_0_1 = tre2_0_0 + tre2_0_1;
		    tim0_0_1 = tim2_0_0 + tim2_0_1;
		    tre0_4_1 = tre2_0_0 - tre2_0_1;
		    tim0_4_1 = tim2_0_0 - tim2_0_1;
		    tre0_2_1 = tre2_1_0 + tim2_1_1;
		    tim0_2_1 = tim2_1_0 - tre2_1_1;
		    tre0_6_1 = tre2_1_0 - tim2_1_1;
		    tim0_6_1 = tim2_1_0 + tre2_1_1;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_1_0 + tim1_1_2;
		    tim2_0_0 = tim1_1_0 - tre1_1_2;
		    tre2_1_0 = tre1_1_0 - tim1_1_2;
		    tim2_1_0 = tim1_1_0 + tre1_1_2;
		    {
			 FFTW_REAL tre3_0_0;
			 FFTW_REAL tim3_0_0;
			 FFTW_REAL tre3_1_0;
			 FFTW_REAL tim3_1_0;
			 tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 + tim1_1_1);
			 tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 - tre1_1_1);
			 tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 - tre1_1_3);
			 tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 + tre1_1_3);
			 tre2_0_1 = tre3_0_0 + tre3_1_0;
			 tim2_0_1 = tim3_0_0 - tim3_1_0;
			 tre2_1_1 = tre3_0_0 - tre3_1_0;
			 tim2_1_1 = tim3_0_0 + tim3_1_0;
		    }
		    tre0_1_1 = tre2_0_0 + tre2_0_1;
		    tim0_1_1 = tim2_0_0 + tim2_0_1;
		    tre0_5_1 = tre2_0_0 - tre2_0_1;
		    tim0_5_1 = tim2_0_0 - tim2_0_1;
		    tre0_3_1 = tre2_1_0 + tim2_1_1;
		    tim0_3_1 = tim2_1_0 - tre2_1_1;
		    tre0_7_1 = tre2_1_0 - tim2_1_1;
		    tim0_7_1 = tim2_1_0 + tre2_1_1;
	       }
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_0_2;
	       FFTW_REAL tim1_0_2;
	       FFTW_REAL tre1_0_3;
	       FFTW_REAL tim1_0_3;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       FFTW_REAL tre1_1_2;
	       FFTW_REAL tim1_1_2;
	       FFTW_REAL tre1_1_3;
	       FFTW_REAL tim1_1_3;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[2 * stride]);
			 ti = c_im(inout[2 * stride]);
			 twr = c_re(W[1]);
			 twi = c_im(W[1]);
			 tre2_0_0 = (tr * twr) - (ti * twi);
			 tim2_0_0 = (tr * twi) + (ti * twr);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[34 * stride]);
			 ti = c_im(inout[34 * stride]);
			 twr = c_re(W[33]);
			 twi = c_im(W[33]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_0 = tre2_0_0 + tre2_1_0;
		    tim1_0_0 = tim2_0_0 + tim2_1_0;
		    tre1_1_0 = tre2_0_0 - tre2_1_0;
		    tim1_1_0 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[10 * stride]);
			 ti = c_im(inout[10 * stride]);
			 twr = c_re(W[9]);
			 twi = c_im(W[9]);
			 tre2_0_0 = (tr * twr) - (ti * twi);
			 tim2_0_0 = (tr * twi) + (ti * twr);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[42 * stride]);
			 ti = c_im(inout[42 * stride]);
			 twr = c_re(W[41]);
			 twi = c_im(W[41]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[18 * stride]);
			 ti = c_im(inout[18 * stride]);
			 twr = c_re(W[17]);
			 twi = c_im(W[17]);
			 tre2_0_0 = (tr * twr) - (ti * twi);
			 tim2_0_0 = (tr * twi) + (ti * twr);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[50 * stride]);
			 ti = c_im(inout[50 * stride]);
			 twr = c_re(W[49]);
			 twi = c_im(W[49]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_2 = tre2_0_0 + tre2_1_0;
		    tim1_0_2 = tim2_0_0 + tim2_1_0;
		    tre1_1_2 = tre2_0_0 - tre2_1_0;
		    tim1_1_2 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[26 * stride]);
			 ti = c_im(inout[26 * stride]);
			 twr = c_re(W[25]);
			 twi = c_im(W[25]);
			 tre2_0_0 = (tr * twr) - (ti * twi);
			 tim2_0_0 = (tr * twi) + (ti * twr);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[58 * stride]);
			 ti = c_im(inout[58 * stride]);
			 twr = c_re(W[57]);
			 twi = c_im(W[57]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_3 = tre2_0_0 + tre2_1_0;
		    tim1_0_3 = tim2_0_0 + tim2_1_0;
		    tre1_1_3 = tre2_0_0 - tre2_1_0;
		    tim1_1_3 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_0_0 + tre1_0_2;
		    tim2_0_0 = tim1_0_0 + tim1_0_2;
		    tre2_1_0 = tre1_0_0 - tre1_0_2;
		    tim2_1_0 = tim1_0_0 - tim1_0_2;
		    tre2_0_1 = tre1_0_1 + tre1_0_3;
		    tim2_0_1 = tim1_0_1 + tim1_0_3;
		    tre2_1_1 = tre1_0_1 - tre1_0_3;
		    tim2_1_1 = tim1_0_1 - tim1_0_3;
		    tre0_0_2 = tre2_0_0 + tre2_0_1;
		    tim0_0_2 = tim2_0_0 + tim2_0_1;
		    tre0_4_2 = tre2_0_0 - tre2_0_1;
		    tim0_4_2 = tim2_0_0 - tim2_0_1;
		    tre0_2_2 = tre2_1_0 + tim2_1_1;
		    tim0_2_2 = tim2_1_0 - tre2_1_1;
		    tre0_6_2 = tre2_1_0 - tim2_1_1;
		    tim0_6_2 = tim2_1_0 + tre2_1_1;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_1_0 + tim1_1_2;
		    tim2_0_0 = tim1_1_0 - tre1_1_2;
		    tre2_1_0 = tre1_1_0 - tim1_1_2;
		    tim2_1_0 = tim1_1_0 + tre1_1_2;
		    {
			 FFTW_REAL tre3_0_0;
			 FFTW_REAL tim3_0_0;
			 FFTW_REAL tre3_1_0;
			 FFTW_REAL tim3_1_0;
			 tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 + tim1_1_1);
			 tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 - tre1_1_1);
			 tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 - tre1_1_3);
			 tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 + tre1_1_3);
			 tre2_0_1 = tre3_0_0 + tre3_1_0;
			 tim2_0_1 = tim3_0_0 - tim3_1_0;
			 tre2_1_1 = tre3_0_0 - tre3_1_0;
			 tim2_1_1 = tim3_0_0 + tim3_1_0;
		    }
		    tre0_1_2 = tre2_0_0 + tre2_0_1;
		    tim0_1_2 = tim2_0_0 + tim2_0_1;
		    tre0_5_2 = tre2_0_0 - tre2_0_1;
		    tim0_5_2 = tim2_0_0 - tim2_0_1;
		    tre0_3_2 = tre2_1_0 + tim2_1_1;
		    tim0_3_2 = tim2_1_0 - tre2_1_1;
		    tre0_7_2 = tre2_1_0 - tim2_1_1;
		    tim0_7_2 = tim2_1_0 + tre2_1_1;
	       }
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_0_2;
	       FFTW_REAL tim1_0_2;
	       FFTW_REAL tre1_0_3;
	       FFTW_REAL tim1_0_3;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       FFTW_REAL tre1_1_2;
	       FFTW_REAL tim1_1_2;
	       FFTW_REAL tre1_1_3;
	       FFTW_REAL tim1_1_3;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[3 * stride]);
			 ti = c_im(inout[3 * stride]);
			 twr = c_re(W[2]);
			 twi = c_im(W[2]);
			 tre2_0_0 = (tr * twr) - (ti * twi);
			 tim2_0_0 = (tr * twi) + (ti * twr);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[35 * stride]);
			 ti = c_im(inout[35 * stride]);
			 twr = c_re(W[34]);
			 twi = c_im(W[34]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_0 = tre2_0_0 + tre2_1_0;
		    tim1_0_0 = tim2_0_0 + tim2_1_0;
		    tre1_1_0 = tre2_0_0 - tre2_1_0;
		    tim1_1_0 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[11 * stride]);
			 ti = c_im(inout[11 * stride]);
			 twr = c_re(W[10]);
			 twi = c_im(W[10]);
			 tre2_0_0 = (tr * twr) - (ti * twi);
			 tim2_0_0 = (tr * twi) + (ti * twr);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[43 * stride]);
			 ti = c_im(inout[43 * stride]);
			 twr = c_re(W[42]);
			 twi = c_im(W[42]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[19 * stride]);
			 ti = c_im(inout[19 * stride]);
			 twr = c_re(W[18]);
			 twi = c_im(W[18]);
			 tre2_0_0 = (tr * twr) - (ti * twi);
			 tim2_0_0 = (tr * twi) + (ti * twr);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[51 * stride]);
			 ti = c_im(inout[51 * stride]);
			 twr = c_re(W[50]);
			 twi = c_im(W[50]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_2 = tre2_0_0 + tre2_1_0;
		    tim1_0_2 = tim2_0_0 + tim2_1_0;
		    tre1_1_2 = tre2_0_0 - tre2_1_0;
		    tim1_1_2 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[27 * stride]);
			 ti = c_im(inout[27 * stride]);
			 twr = c_re(W[26]);
			 twi = c_im(W[26]);
			 tre2_0_0 = (tr * twr) - (ti * twi);
			 tim2_0_0 = (tr * twi) + (ti * twr);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[59 * stride]);
			 ti = c_im(inout[59 * stride]);
			 twr = c_re(W[58]);
			 twi = c_im(W[58]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_3 = tre2_0_0 + tre2_1_0;
		    tim1_0_3 = tim2_0_0 + tim2_1_0;
		    tre1_1_3 = tre2_0_0 - tre2_1_0;
		    tim1_1_3 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_0_0 + tre1_0_2;
		    tim2_0_0 = tim1_0_0 + tim1_0_2;
		    tre2_1_0 = tre1_0_0 - tre1_0_2;
		    tim2_1_0 = tim1_0_0 - tim1_0_2;
		    tre2_0_1 = tre1_0_1 + tre1_0_3;
		    tim2_0_1 = tim1_0_1 + tim1_0_3;
		    tre2_1_1 = tre1_0_1 - tre1_0_3;
		    tim2_1_1 = tim1_0_1 - tim1_0_3;
		    tre0_0_3 = tre2_0_0 + tre2_0_1;
		    tim0_0_3 = tim2_0_0 + tim2_0_1;
		    tre0_4_3 = tre2_0_0 - tre2_0_1;
		    tim0_4_3 = tim2_0_0 - tim2_0_1;
		    tre0_2_3 = tre2_1_0 + tim2_1_1;
		    tim0_2_3 = tim2_1_0 - tre2_1_1;
		    tre0_6_3 = tre2_1_0 - tim2_1_1;
		    tim0_6_3 = tim2_1_0 + tre2_1_1;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_1_0 + tim1_1_2;
		    tim2_0_0 = tim1_1_0 - tre1_1_2;
		    tre2_1_0 = tre1_1_0 - tim1_1_2;
		    tim2_1_0 = tim1_1_0 + tre1_1_2;
		    {
			 FFTW_REAL tre3_0_0;
			 FFTW_REAL tim3_0_0;
			 FFTW_REAL tre3_1_0;
			 FFTW_REAL tim3_1_0;
			 tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 + tim1_1_1);
			 tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 - tre1_1_1);
			 tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 - tre1_1_3);
			 tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 + tre1_1_3);
			 tre2_0_1 = tre3_0_0 + tre3_1_0;
			 tim2_0_1 = tim3_0_0 - tim3_1_0;
			 tre2_1_1 = tre3_0_0 - tre3_1_0;
			 tim2_1_1 = tim3_0_0 + tim3_1_0;
		    }
		    tre0_1_3 = tre2_0_0 + tre2_0_1;
		    tim0_1_3 = tim2_0_0 + tim2_0_1;
		    tre0_5_3 = tre2_0_0 - tre2_0_1;
		    tim0_5_3 = tim2_0_0 - tim2_0_1;
		    tre0_3_3 = tre2_1_0 + tim2_1_1;
		    tim0_3_3 = tim2_1_0 - tre2_1_1;
		    tre0_7_3 = tre2_1_0 - tim2_1_1;
		    tim0_7_3 = tim2_1_0 + tre2_1_1;
	       }
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_0_2;
	       FFTW_REAL tim1_0_2;
	       FFTW_REAL tre1_0_3;
	       FFTW_REAL tim1_0_3;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       FFTW_REAL tre1_1_2;
	       FFTW_REAL tim1_1_2;
	       FFTW_REAL tre1_1_3;
	       FFTW_REAL tim1_1_3;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[4 * stride]);
			 ti = c_im(inout[4 * stride]);
			 twr = c_re(W[3]);
			 twi = c_im(W[3]);
			 tre2_0_0 = (tr * twr) - (ti * twi);
			 tim2_0_0 = (tr * twi) + (ti * twr);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[36 * stride]);
			 ti = c_im(inout[36 * stride]);
			 twr = c_re(W[35]);
			 twi = c_im(W[35]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_0 = tre2_0_0 + tre2_1_0;
		    tim1_0_0 = tim2_0_0 + tim2_1_0;
		    tre1_1_0 = tre2_0_0 - tre2_1_0;
		    tim1_1_0 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[12 * stride]);
			 ti = c_im(inout[12 * stride]);
			 twr = c_re(W[11]);
			 twi = c_im(W[11]);
			 tre2_0_0 = (tr * twr) - (ti * twi);
			 tim2_0_0 = (tr * twi) + (ti * twr);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[44 * stride]);
			 ti = c_im(inout[44 * stride]);
			 twr = c_re(W[43]);
			 twi = c_im(W[43]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[20 * stride]);
			 ti = c_im(inout[20 * stride]);
			 twr = c_re(W[19]);
			 twi = c_im(W[19]);
			 tre2_0_0 = (tr * twr) - (ti * twi);
			 tim2_0_0 = (tr * twi) + (ti * twr);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[52 * stride]);
			 ti = c_im(inout[52 * stride]);
			 twr = c_re(W[51]);
			 twi = c_im(W[51]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_2 = tre2_0_0 + tre2_1_0;
		    tim1_0_2 = tim2_0_0 + tim2_1_0;
		    tre1_1_2 = tre2_0_0 - tre2_1_0;
		    tim1_1_2 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[28 * stride]);
			 ti = c_im(inout[28 * stride]);
			 twr = c_re(W[27]);
			 twi = c_im(W[27]);
			 tre2_0_0 = (tr * twr) - (ti * twi);
			 tim2_0_0 = (tr * twi) + (ti * twr);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[60 * stride]);
			 ti = c_im(inout[60 * stride]);
			 twr = c_re(W[59]);
			 twi = c_im(W[59]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_3 = tre2_0_0 + tre2_1_0;
		    tim1_0_3 = tim2_0_0 + tim2_1_0;
		    tre1_1_3 = tre2_0_0 - tre2_1_0;
		    tim1_1_3 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_0_0 + tre1_0_2;
		    tim2_0_0 = tim1_0_0 + tim1_0_2;
		    tre2_1_0 = tre1_0_0 - tre1_0_2;
		    tim2_1_0 = tim1_0_0 - tim1_0_2;
		    tre2_0_1 = tre1_0_1 + tre1_0_3;
		    tim2_0_1 = tim1_0_1 + tim1_0_3;
		    tre2_1_1 = tre1_0_1 - tre1_0_3;
		    tim2_1_1 = tim1_0_1 - tim1_0_3;
		    tre0_0_4 = tre2_0_0 + tre2_0_1;
		    tim0_0_4 = tim2_0_0 + tim2_0_1;
		    tre0_4_4 = tre2_0_0 - tre2_0_1;
		    tim0_4_4 = tim2_0_0 - tim2_0_1;
		    tre0_2_4 = tre2_1_0 + tim2_1_1;
		    tim0_2_4 = tim2_1_0 - tre2_1_1;
		    tre0_6_4 = tre2_1_0 - tim2_1_1;
		    tim0_6_4 = tim2_1_0 + tre2_1_1;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_1_0 + tim1_1_2;
		    tim2_0_0 = tim1_1_0 - tre1_1_2;
		    tre2_1_0 = tre1_1_0 - tim1_1_2;
		    tim2_1_0 = tim1_1_0 + tre1_1_2;
		    {
			 FFTW_REAL tre3_0_0;
			 FFTW_REAL tim3_0_0;
			 FFTW_REAL tre3_1_0;
			 FFTW_REAL tim3_1_0;
			 tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 + tim1_1_1);
			 tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 - tre1_1_1);
			 tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 - tre1_1_3);
			 tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 + tre1_1_3);
			 tre2_0_1 = tre3_0_0 + tre3_1_0;
			 tim2_0_1 = tim3_0_0 - tim3_1_0;
			 tre2_1_1 = tre3_0_0 - tre3_1_0;
			 tim2_1_1 = tim3_0_0 + tim3_1_0;
		    }
		    tre0_1_4 = tre2_0_0 + tre2_0_1;
		    tim0_1_4 = tim2_0_0 + tim2_0_1;
		    tre0_5_4 = tre2_0_0 - tre2_0_1;
		    tim0_5_4 = tim2_0_0 - tim2_0_1;
		    tre0_3_4 = tre2_1_0 + tim2_1_1;
		    tim0_3_4 = tim2_1_0 - tre2_1_1;
		    tre0_7_4 = tre2_1_0 - tim2_1_1;
		    tim0_7_4 = tim2_1_0 + tre2_1_1;
	       }
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_0_2;
	       FFTW_REAL tim1_0_2;
	       FFTW_REAL tre1_0_3;
	       FFTW_REAL tim1_0_3;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       FFTW_REAL tre1_1_2;
	       FFTW_REAL tim1_1_2;
	       FFTW_REAL tre1_1_3;
	       FFTW_REAL tim1_1_3;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[5 * stride]);
			 ti = c_im(inout[5 * stride]);
			 twr = c_re(W[4]);
			 twi = c_im(W[4]);
			 tre2_0_0 = (tr * twr) - (ti * twi);
			 tim2_0_0 = (tr * twi) + (ti * twr);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[37 * stride]);
			 ti = c_im(inout[37 * stride]);
			 twr = c_re(W[36]);
			 twi = c_im(W[36]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_0 = tre2_0_0 + tre2_1_0;
		    tim1_0_0 = tim2_0_0 + tim2_1_0;
		    tre1_1_0 = tre2_0_0 - tre2_1_0;
		    tim1_1_0 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[13 * stride]);
			 ti = c_im(inout[13 * stride]);
			 twr = c_re(W[12]);
			 twi = c_im(W[12]);
			 tre2_0_0 = (tr * twr) - (ti * twi);
			 tim2_0_0 = (tr * twi) + (ti * twr);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[45 * stride]);
			 ti = c_im(inout[45 * stride]);
			 twr = c_re(W[44]);
			 twi = c_im(W[44]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[21 * stride]);
			 ti = c_im(inout[21 * stride]);
			 twr = c_re(W[20]);
			 twi = c_im(W[20]);
			 tre2_0_0 = (tr * twr) - (ti * twi);
			 tim2_0_0 = (tr * twi) + (ti * twr);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[53 * stride]);
			 ti = c_im(inout[53 * stride]);
			 twr = c_re(W[52]);
			 twi = c_im(W[52]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_2 = tre2_0_0 + tre2_1_0;
		    tim1_0_2 = tim2_0_0 + tim2_1_0;
		    tre1_1_2 = tre2_0_0 - tre2_1_0;
		    tim1_1_2 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[29 * stride]);
			 ti = c_im(inout[29 * stride]);
			 twr = c_re(W[28]);
			 twi = c_im(W[28]);
			 tre2_0_0 = (tr * twr) - (ti * twi);
			 tim2_0_0 = (tr * twi) + (ti * twr);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[61 * stride]);
			 ti = c_im(inout[61 * stride]);
			 twr = c_re(W[60]);
			 twi = c_im(W[60]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_3 = tre2_0_0 + tre2_1_0;
		    tim1_0_3 = tim2_0_0 + tim2_1_0;
		    tre1_1_3 = tre2_0_0 - tre2_1_0;
		    tim1_1_3 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_0_0 + tre1_0_2;
		    tim2_0_0 = tim1_0_0 + tim1_0_2;
		    tre2_1_0 = tre1_0_0 - tre1_0_2;
		    tim2_1_0 = tim1_0_0 - tim1_0_2;
		    tre2_0_1 = tre1_0_1 + tre1_0_3;
		    tim2_0_1 = tim1_0_1 + tim1_0_3;
		    tre2_1_1 = tre1_0_1 - tre1_0_3;
		    tim2_1_1 = tim1_0_1 - tim1_0_3;
		    tre0_0_5 = tre2_0_0 + tre2_0_1;
		    tim0_0_5 = tim2_0_0 + tim2_0_1;
		    tre0_4_5 = tre2_0_0 - tre2_0_1;
		    tim0_4_5 = tim2_0_0 - tim2_0_1;
		    tre0_2_5 = tre2_1_0 + tim2_1_1;
		    tim0_2_5 = tim2_1_0 - tre2_1_1;
		    tre0_6_5 = tre2_1_0 - tim2_1_1;
		    tim0_6_5 = tim2_1_0 + tre2_1_1;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_1_0 + tim1_1_2;
		    tim2_0_0 = tim1_1_0 - tre1_1_2;
		    tre2_1_0 = tre1_1_0 - tim1_1_2;
		    tim2_1_0 = tim1_1_0 + tre1_1_2;
		    {
			 FFTW_REAL tre3_0_0;
			 FFTW_REAL tim3_0_0;
			 FFTW_REAL tre3_1_0;
			 FFTW_REAL tim3_1_0;
			 tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 + tim1_1_1);
			 tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 - tre1_1_1);
			 tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 - tre1_1_3);
			 tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 + tre1_1_3);
			 tre2_0_1 = tre3_0_0 + tre3_1_0;
			 tim2_0_1 = tim3_0_0 - tim3_1_0;
			 tre2_1_1 = tre3_0_0 - tre3_1_0;
			 tim2_1_1 = tim3_0_0 + tim3_1_0;
		    }
		    tre0_1_5 = tre2_0_0 + tre2_0_1;
		    tim0_1_5 = tim2_0_0 + tim2_0_1;
		    tre0_5_5 = tre2_0_0 - tre2_0_1;
		    tim0_5_5 = tim2_0_0 - tim2_0_1;
		    tre0_3_5 = tre2_1_0 + tim2_1_1;
		    tim0_3_5 = tim2_1_0 - tre2_1_1;
		    tre0_7_5 = tre2_1_0 - tim2_1_1;
		    tim0_7_5 = tim2_1_0 + tre2_1_1;
	       }
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_0_2;
	       FFTW_REAL tim1_0_2;
	       FFTW_REAL tre1_0_3;
	       FFTW_REAL tim1_0_3;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       FFTW_REAL tre1_1_2;
	       FFTW_REAL tim1_1_2;
	       FFTW_REAL tre1_1_3;
	       FFTW_REAL tim1_1_3;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[6 * stride]);
			 ti = c_im(inout[6 * stride]);
			 twr = c_re(W[5]);
			 twi = c_im(W[5]);
			 tre2_0_0 = (tr * twr) - (ti * twi);
			 tim2_0_0 = (tr * twi) + (ti * twr);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[38 * stride]);
			 ti = c_im(inout[38 * stride]);
			 twr = c_re(W[37]);
			 twi = c_im(W[37]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_0 = tre2_0_0 + tre2_1_0;
		    tim1_0_0 = tim2_0_0 + tim2_1_0;
		    tre1_1_0 = tre2_0_0 - tre2_1_0;
		    tim1_1_0 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[14 * stride]);
			 ti = c_im(inout[14 * stride]);
			 twr = c_re(W[13]);
			 twi = c_im(W[13]);
			 tre2_0_0 = (tr * twr) - (ti * twi);
			 tim2_0_0 = (tr * twi) + (ti * twr);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[46 * stride]);
			 ti = c_im(inout[46 * stride]);
			 twr = c_re(W[45]);
			 twi = c_im(W[45]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[22 * stride]);
			 ti = c_im(inout[22 * stride]);
			 twr = c_re(W[21]);
			 twi = c_im(W[21]);
			 tre2_0_0 = (tr * twr) - (ti * twi);
			 tim2_0_0 = (tr * twi) + (ti * twr);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[54 * stride]);
			 ti = c_im(inout[54 * stride]);
			 twr = c_re(W[53]);
			 twi = c_im(W[53]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_2 = tre2_0_0 + tre2_1_0;
		    tim1_0_2 = tim2_0_0 + tim2_1_0;
		    tre1_1_2 = tre2_0_0 - tre2_1_0;
		    tim1_1_2 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[30 * stride]);
			 ti = c_im(inout[30 * stride]);
			 twr = c_re(W[29]);
			 twi = c_im(W[29]);
			 tre2_0_0 = (tr * twr) - (ti * twi);
			 tim2_0_0 = (tr * twi) + (ti * twr);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[62 * stride]);
			 ti = c_im(inout[62 * stride]);
			 twr = c_re(W[61]);
			 twi = c_im(W[61]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_3 = tre2_0_0 + tre2_1_0;
		    tim1_0_3 = tim2_0_0 + tim2_1_0;
		    tre1_1_3 = tre2_0_0 - tre2_1_0;
		    tim1_1_3 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_0_0 + tre1_0_2;
		    tim2_0_0 = tim1_0_0 + tim1_0_2;
		    tre2_1_0 = tre1_0_0 - tre1_0_2;
		    tim2_1_0 = tim1_0_0 - tim1_0_2;
		    tre2_0_1 = tre1_0_1 + tre1_0_3;
		    tim2_0_1 = tim1_0_1 + tim1_0_3;
		    tre2_1_1 = tre1_0_1 - tre1_0_3;
		    tim2_1_1 = tim1_0_1 - tim1_0_3;
		    tre0_0_6 = tre2_0_0 + tre2_0_1;
		    tim0_0_6 = tim2_0_0 + tim2_0_1;
		    tre0_4_6 = tre2_0_0 - tre2_0_1;
		    tim0_4_6 = tim2_0_0 - tim2_0_1;
		    tre0_2_6 = tre2_1_0 + tim2_1_1;
		    tim0_2_6 = tim2_1_0 - tre2_1_1;
		    tre0_6_6 = tre2_1_0 - tim2_1_1;
		    tim0_6_6 = tim2_1_0 + tre2_1_1;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_1_0 + tim1_1_2;
		    tim2_0_0 = tim1_1_0 - tre1_1_2;
		    tre2_1_0 = tre1_1_0 - tim1_1_2;
		    tim2_1_0 = tim1_1_0 + tre1_1_2;
		    {
			 FFTW_REAL tre3_0_0;
			 FFTW_REAL tim3_0_0;
			 FFTW_REAL tre3_1_0;
			 FFTW_REAL tim3_1_0;
			 tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 + tim1_1_1);
			 tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 - tre1_1_1);
			 tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 - tre1_1_3);
			 tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 + tre1_1_3);
			 tre2_0_1 = tre3_0_0 + tre3_1_0;
			 tim2_0_1 = tim3_0_0 - tim3_1_0;
			 tre2_1_1 = tre3_0_0 - tre3_1_0;
			 tim2_1_1 = tim3_0_0 + tim3_1_0;
		    }
		    tre0_1_6 = tre2_0_0 + tre2_0_1;
		    tim0_1_6 = tim2_0_0 + tim2_0_1;
		    tre0_5_6 = tre2_0_0 - tre2_0_1;
		    tim0_5_6 = tim2_0_0 - tim2_0_1;
		    tre0_3_6 = tre2_1_0 + tim2_1_1;
		    tim0_3_6 = tim2_1_0 - tre2_1_1;
		    tre0_7_6 = tre2_1_0 - tim2_1_1;
		    tim0_7_6 = tim2_1_0 + tre2_1_1;
	       }
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_0_2;
	       FFTW_REAL tim1_0_2;
	       FFTW_REAL tre1_0_3;
	       FFTW_REAL tim1_0_3;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       FFTW_REAL tre1_1_2;
	       FFTW_REAL tim1_1_2;
	       FFTW_REAL tre1_1_3;
	       FFTW_REAL tim1_1_3;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[7 * stride]);
			 ti = c_im(inout[7 * stride]);
			 twr = c_re(W[6]);
			 twi = c_im(W[6]);
			 tre2_0_0 = (tr * twr) - (ti * twi);
			 tim2_0_0 = (tr * twi) + (ti * twr);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[39 * stride]);
			 ti = c_im(inout[39 * stride]);
			 twr = c_re(W[38]);
			 twi = c_im(W[38]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_0 = tre2_0_0 + tre2_1_0;
		    tim1_0_0 = tim2_0_0 + tim2_1_0;
		    tre1_1_0 = tre2_0_0 - tre2_1_0;
		    tim1_1_0 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[15 * stride]);
			 ti = c_im(inout[15 * stride]);
			 twr = c_re(W[14]);
			 twi = c_im(W[14]);
			 tre2_0_0 = (tr * twr) - (ti * twi);
			 tim2_0_0 = (tr * twi) + (ti * twr);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[47 * stride]);
			 ti = c_im(inout[47 * stride]);
			 twr = c_re(W[46]);
			 twi = c_im(W[46]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[23 * stride]);
			 ti = c_im(inout[23 * stride]);
			 twr = c_re(W[22]);
			 twi = c_im(W[22]);
			 tre2_0_0 = (tr * twr) - (ti * twi);
			 tim2_0_0 = (tr * twi) + (ti * twr);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[55 * stride]);
			 ti = c_im(inout[55 * stride]);
			 twr = c_re(W[54]);
			 twi = c_im(W[54]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_2 = tre2_0_0 + tre2_1_0;
		    tim1_0_2 = tim2_0_0 + tim2_1_0;
		    tre1_1_2 = tre2_0_0 - tre2_1_0;
		    tim1_1_2 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[31 * stride]);
			 ti = c_im(inout[31 * stride]);
			 twr = c_re(W[30]);
			 twi = c_im(W[30]);
			 tre2_0_0 = (tr * twr) - (ti * twi);
			 tim2_0_0 = (tr * twi) + (ti * twr);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[63 * stride]);
			 ti = c_im(inout[63 * stride]);
			 twr = c_re(W[62]);
			 twi = c_im(W[62]);
			 tre2_1_0 = (tr * twr) - (ti * twi);
			 tim2_1_0 = (tr * twi) + (ti * twr);
		    }
		    tre1_0_3 = tre2_0_0 + tre2_1_0;
		    tim1_0_3 = tim2_0_0 + tim2_1_0;
		    tre1_1_3 = tre2_0_0 - tre2_1_0;
		    tim1_1_3 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_0_0 + tre1_0_2;
		    tim2_0_0 = tim1_0_0 + tim1_0_2;
		    tre2_1_0 = tre1_0_0 - tre1_0_2;
		    tim2_1_0 = tim1_0_0 - tim1_0_2;
		    tre2_0_1 = tre1_0_1 + tre1_0_3;
		    tim2_0_1 = tim1_0_1 + tim1_0_3;
		    tre2_1_1 = tre1_0_1 - tre1_0_3;
		    tim2_1_1 = tim1_0_1 - tim1_0_3;
		    tre0_0_7 = tre2_0_0 + tre2_0_1;
		    tim0_0_7 = tim2_0_0 + tim2_0_1;
		    tre0_4_7 = tre2_0_0 - tre2_0_1;
		    tim0_4_7 = tim2_0_0 - tim2_0_1;
		    tre0_2_7 = tre2_1_0 + tim2_1_1;
		    tim0_2_7 = tim2_1_0 - tre2_1_1;
		    tre0_6_7 = tre2_1_0 - tim2_1_1;
		    tim0_6_7 = tim2_1_0 + tre2_1_1;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_1_0 + tim1_1_2;
		    tim2_0_0 = tim1_1_0 - tre1_1_2;
		    tre2_1_0 = tre1_1_0 - tim1_1_2;
		    tim2_1_0 = tim1_1_0 + tre1_1_2;
		    {
			 FFTW_REAL tre3_0_0;
			 FFTW_REAL tim3_0_0;
			 FFTW_REAL tre3_1_0;
			 FFTW_REAL tim3_1_0;
			 tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 + tim1_1_1);
			 tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 - tre1_1_1);
			 tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 - tre1_1_3);
			 tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 + tre1_1_3);
			 tre2_0_1 = tre3_0_0 + tre3_1_0;
			 tim2_0_1 = tim3_0_0 - tim3_1_0;
			 tre2_1_1 = tre3_0_0 - tre3_1_0;
			 tim2_1_1 = tim3_0_0 + tim3_1_0;
		    }
		    tre0_1_7 = tre2_0_0 + tre2_0_1;
		    tim0_1_7 = tim2_0_0 + tim2_0_1;
		    tre0_5_7 = tre2_0_0 - tre2_0_1;
		    tim0_5_7 = tim2_0_0 - tim2_0_1;
		    tre0_3_7 = tre2_1_0 + tim2_1_1;
		    tim0_3_7 = tim2_1_0 - tre2_1_1;
		    tre0_7_7 = tre2_1_0 - tim2_1_1;
		    tim0_7_7 = tim2_1_0 + tre2_1_1;
	       }
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_0_2;
	       FFTW_REAL tim1_0_2;
	       FFTW_REAL tre1_0_3;
	       FFTW_REAL tim1_0_3;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       FFTW_REAL tre1_1_2;
	       FFTW_REAL tim1_1_2;
	       FFTW_REAL tre1_1_3;
	       FFTW_REAL tim1_1_3;
	       tre1_0_0 = tre0_0_0 + tre0_0_4;
	       tim1_0_0 = tim0_0_0 + tim0_0_4;
	       tre1_1_0 = tre0_0_0 - tre0_0_4;
	       tim1_1_0 = tim0_0_0 - tim0_0_4;
	       tre1_0_1 = tre0_0_1 + tre0_0_5;
	       tim1_0_1 = tim0_0_1 + tim0_0_5;
	       tre1_1_1 = tre0_0_1 - tre0_0_5;
	       tim1_1_1 = tim0_0_1 - tim0_0_5;
	       tre1_0_2 = tre0_0_2 + tre0_0_6;
	       tim1_0_2 = tim0_0_2 + tim0_0_6;
	       tre1_1_2 = tre0_0_2 - tre0_0_6;
	       tim1_1_2 = tim0_0_2 - tim0_0_6;
	       tre1_0_3 = tre0_0_3 + tre0_0_7;
	       tim1_0_3 = tim0_0_3 + tim0_0_7;
	       tre1_1_3 = tre0_0_3 - tre0_0_7;
	       tim1_1_3 = tim0_0_3 - tim0_0_7;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_0_0 + tre1_0_2;
		    tim2_0_0 = tim1_0_0 + tim1_0_2;
		    tre2_1_0 = tre1_0_0 - tre1_0_2;
		    tim2_1_0 = tim1_0_0 - tim1_0_2;
		    tre2_0_1 = tre1_0_1 + tre1_0_3;
		    tim2_0_1 = tim1_0_1 + tim1_0_3;
		    tre2_1_1 = tre1_0_1 - tre1_0_3;
		    tim2_1_1 = tim1_0_1 - tim1_0_3;
		    c_re(inout[0]) = tre2_0_0 + tre2_0_1;
		    c_im(inout[0]) = tim2_0_0 + tim2_0_1;
		    c_re(inout[32 * stride]) = tre2_0_0 - tre2_0_1;
		    c_im(inout[32 * stride]) = tim2_0_0 - tim2_0_1;
		    c_re(inout[16 * stride]) = tre2_1_0 + tim2_1_1;
		    c_im(inout[16 * stride]) = tim2_1_0 - tre2_1_1;
		    c_re(inout[48 * stride]) = tre2_1_0 - tim2_1_1;
		    c_im(inout[48 * stride]) = tim2_1_0 + tre2_1_1;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_1_0 + tim1_1_2;
		    tim2_0_0 = tim1_1_0 - tre1_1_2;
		    tre2_1_0 = tre1_1_0 - tim1_1_2;
		    tim2_1_0 = tim1_1_0 + tre1_1_2;
		    {
			 FFTW_REAL tre3_0_0;
			 FFTW_REAL tim3_0_0;
			 FFTW_REAL tre3_1_0;
			 FFTW_REAL tim3_1_0;
			 tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 + tim1_1_1);
			 tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 - tre1_1_1);
			 tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 - tre1_1_3);
			 tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 + tre1_1_3);
			 tre2_0_1 = tre3_0_0 + tre3_1_0;
			 tim2_0_1 = tim3_0_0 - tim3_1_0;
			 tre2_1_1 = tre3_0_0 - tre3_1_0;
			 tim2_1_1 = tim3_0_0 + tim3_1_0;
		    }
		    c_re(inout[8 * stride]) = tre2_0_0 + tre2_0_1;
		    c_im(inout[8 * stride]) = tim2_0_0 + tim2_0_1;
		    c_re(inout[40 * stride]) = tre2_0_0 - tre2_0_1;
		    c_im(inout[40 * stride]) = tim2_0_0 - tim2_0_1;
		    c_re(inout[24 * stride]) = tre2_1_0 + tim2_1_1;
		    c_im(inout[24 * stride]) = tim2_1_0 - tre2_1_1;
		    c_re(inout[56 * stride]) = tre2_1_0 - tim2_1_1;
		    c_im(inout[56 * stride]) = tim2_1_0 + tre2_1_1;
	       }
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_0_2;
	       FFTW_REAL tim1_0_2;
	       FFTW_REAL tre1_0_3;
	       FFTW_REAL tim1_0_3;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       FFTW_REAL tre1_1_2;
	       FFTW_REAL tim1_1_2;
	       FFTW_REAL tre1_1_3;
	       FFTW_REAL tim1_1_3;
	       {
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_1_0 = (((FFTW_REAL) FFTW_K923879532) * tre0_1_4) + (((FFTW_REAL) FFTW_K382683432) * tim0_1_4);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K923879532) * tim0_1_4) - (((FFTW_REAL) FFTW_K382683432) * tre0_1_4);
		    tre1_0_0 = tre0_1_0 + tre2_1_0;
		    tim1_0_0 = tim0_1_0 + tim2_1_0;
		    tre1_1_0 = tre0_1_0 - tre2_1_0;
		    tim1_1_0 = tim0_1_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K995184726) * tre0_1_1) + (((FFTW_REAL) FFTW_K098017140) * tim0_1_1);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K995184726) * tim0_1_1) - (((FFTW_REAL) FFTW_K098017140) * tre0_1_1);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K881921264) * tre0_1_5) + (((FFTW_REAL) FFTW_K471396736) * tim0_1_5);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K881921264) * tim0_1_5) - (((FFTW_REAL) FFTW_K471396736) * tre0_1_5);
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K980785280) * tre0_1_2) + (((FFTW_REAL) FFTW_K195090322) * tim0_1_2);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K980785280) * tim0_1_2) - (((FFTW_REAL) FFTW_K195090322) * tre0_1_2);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K831469612) * tre0_1_6) + (((FFTW_REAL) FFTW_K555570233) * tim0_1_6);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K831469612) * tim0_1_6) - (((FFTW_REAL) FFTW_K555570233) * tre0_1_6);
		    tre1_0_2 = tre2_0_0 + tre2_1_0;
		    tim1_0_2 = tim2_0_0 + tim2_1_0;
		    tre1_1_2 = tre2_0_0 - tre2_1_0;
		    tim1_1_2 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K956940335) * tre0_1_3) + (((FFTW_REAL) FFTW_K290284677) * tim0_1_3);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K956940335) * tim0_1_3) - (((FFTW_REAL) FFTW_K290284677) * tre0_1_3);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K773010453) * tre0_1_7) + (((FFTW_REAL) FFTW_K634393284) * tim0_1_7);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K773010453) * tim0_1_7) - (((FFTW_REAL) FFTW_K634393284) * tre0_1_7);
		    tre1_0_3 = tre2_0_0 + tre2_1_0;
		    tim1_0_3 = tim2_0_0 + tim2_1_0;
		    tre1_1_3 = tre2_0_0 - tre2_1_0;
		    tim1_1_3 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_0_0 + tre1_0_2;
		    tim2_0_0 = tim1_0_0 + tim1_0_2;
		    tre2_1_0 = tre1_0_0 - tre1_0_2;
		    tim2_1_0 = tim1_0_0 - tim1_0_2;
		    tre2_0_1 = tre1_0_1 + tre1_0_3;
		    tim2_0_1 = tim1_0_1 + tim1_0_3;
		    tre2_1_1 = tre1_0_1 - tre1_0_3;
		    tim2_1_1 = tim1_0_1 - tim1_0_3;
		    c_re(inout[stride]) = tre2_0_0 + tre2_0_1;
		    c_im(inout[stride]) = tim2_0_0 + tim2_0_1;
		    c_re(inout[33 * stride]) = tre2_0_0 - tre2_0_1;
		    c_im(inout[33 * stride]) = tim2_0_0 - tim2_0_1;
		    c_re(inout[17 * stride]) = tre2_1_0 + tim2_1_1;
		    c_im(inout[17 * stride]) = tim2_1_0 - tre2_1_1;
		    c_re(inout[49 * stride]) = tre2_1_0 - tim2_1_1;
		    c_im(inout[49 * stride]) = tim2_1_0 + tre2_1_1;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_1_0 + tim1_1_2;
		    tim2_0_0 = tim1_1_0 - tre1_1_2;
		    tre2_1_0 = tre1_1_0 - tim1_1_2;
		    tim2_1_0 = tim1_1_0 + tre1_1_2;
		    {
			 FFTW_REAL tre3_0_0;
			 FFTW_REAL tim3_0_0;
			 FFTW_REAL tre3_1_0;
			 FFTW_REAL tim3_1_0;
			 tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 + tim1_1_1);
			 tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 - tre1_1_1);
			 tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 - tre1_1_3);
			 tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 + tre1_1_3);
			 tre2_0_1 = tre3_0_0 + tre3_1_0;
			 tim2_0_1 = tim3_0_0 - tim3_1_0;
			 tre2_1_1 = tre3_0_0 - tre3_1_0;
			 tim2_1_1 = tim3_0_0 + tim3_1_0;
		    }
		    c_re(inout[9 * stride]) = tre2_0_0 + tre2_0_1;
		    c_im(inout[9 * stride]) = tim2_0_0 + tim2_0_1;
		    c_re(inout[41 * stride]) = tre2_0_0 - tre2_0_1;
		    c_im(inout[41 * stride]) = tim2_0_0 - tim2_0_1;
		    c_re(inout[25 * stride]) = tre2_1_0 + tim2_1_1;
		    c_im(inout[25 * stride]) = tim2_1_0 - tre2_1_1;
		    c_re(inout[57 * stride]) = tre2_1_0 - tim2_1_1;
		    c_im(inout[57 * stride]) = tim2_1_0 + tre2_1_1;
	       }
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_0_2;
	       FFTW_REAL tim1_0_2;
	       FFTW_REAL tre1_0_3;
	       FFTW_REAL tim1_0_3;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       FFTW_REAL tre1_1_2;
	       FFTW_REAL tim1_1_2;
	       FFTW_REAL tre1_1_3;
	       FFTW_REAL tim1_1_3;
	       {
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_2_4 + tim0_2_4);
		    tim2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_2_4 - tre0_2_4);
		    tre1_0_0 = tre0_2_0 + tre2_1_0;
		    tim1_0_0 = tim0_2_0 + tim2_1_0;
		    tre1_1_0 = tre0_2_0 - tre2_1_0;
		    tim1_1_0 = tim0_2_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K980785280) * tre0_2_1) + (((FFTW_REAL) FFTW_K195090322) * tim0_2_1);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K980785280) * tim0_2_1) - (((FFTW_REAL) FFTW_K195090322) * tre0_2_1);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K555570233) * tre0_2_5) + (((FFTW_REAL) FFTW_K831469612) * tim0_2_5);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K555570233) * tim0_2_5) - (((FFTW_REAL) FFTW_K831469612) * tre0_2_5);
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K923879532) * tre0_2_2) + (((FFTW_REAL) FFTW_K382683432) * tim0_2_2);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K923879532) * tim0_2_2) - (((FFTW_REAL) FFTW_K382683432) * tre0_2_2);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tre0_2_6) + (((FFTW_REAL) FFTW_K923879532) * tim0_2_6);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tim0_2_6) - (((FFTW_REAL) FFTW_K923879532) * tre0_2_6);
		    tre1_0_2 = tre2_0_0 + tre2_1_0;
		    tim1_0_2 = tim2_0_0 + tim2_1_0;
		    tre1_1_2 = tre2_0_0 - tre2_1_0;
		    tim1_1_2 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K831469612) * tre0_2_3) + (((FFTW_REAL) FFTW_K555570233) * tim0_2_3);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K831469612) * tim0_2_3) - (((FFTW_REAL) FFTW_K555570233) * tre0_2_3);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K195090322) * tre0_2_7) + (((FFTW_REAL) FFTW_K980785280) * tim0_2_7);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K195090322) * tim0_2_7) - (((FFTW_REAL) FFTW_K980785280) * tre0_2_7);
		    tre1_0_3 = tre2_0_0 + tre2_1_0;
		    tim1_0_3 = tim2_0_0 + tim2_1_0;
		    tre1_1_3 = tre2_0_0 - tre2_1_0;
		    tim1_1_3 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_0_0 + tre1_0_2;
		    tim2_0_0 = tim1_0_0 + tim1_0_2;
		    tre2_1_0 = tre1_0_0 - tre1_0_2;
		    tim2_1_0 = tim1_0_0 - tim1_0_2;
		    tre2_0_1 = tre1_0_1 + tre1_0_3;
		    tim2_0_1 = tim1_0_1 + tim1_0_3;
		    tre2_1_1 = tre1_0_1 - tre1_0_3;
		    tim2_1_1 = tim1_0_1 - tim1_0_3;
		    c_re(inout[2 * stride]) = tre2_0_0 + tre2_0_1;
		    c_im(inout[2 * stride]) = tim2_0_0 + tim2_0_1;
		    c_re(inout[34 * stride]) = tre2_0_0 - tre2_0_1;
		    c_im(inout[34 * stride]) = tim2_0_0 - tim2_0_1;
		    c_re(inout[18 * stride]) = tre2_1_0 + tim2_1_1;
		    c_im(inout[18 * stride]) = tim2_1_0 - tre2_1_1;
		    c_re(inout[50 * stride]) = tre2_1_0 - tim2_1_1;
		    c_im(inout[50 * stride]) = tim2_1_0 + tre2_1_1;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_1_0 + tim1_1_2;
		    tim2_0_0 = tim1_1_0 - tre1_1_2;
		    tre2_1_0 = tre1_1_0 - tim1_1_2;
		    tim2_1_0 = tim1_1_0 + tre1_1_2;
		    {
			 FFTW_REAL tre3_0_0;
			 FFTW_REAL tim3_0_0;
			 FFTW_REAL tre3_1_0;
			 FFTW_REAL tim3_1_0;
			 tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 + tim1_1_1);
			 tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 - tre1_1_1);
			 tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 - tre1_1_3);
			 tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 + tre1_1_3);
			 tre2_0_1 = tre3_0_0 + tre3_1_0;
			 tim2_0_1 = tim3_0_0 - tim3_1_0;
			 tre2_1_1 = tre3_0_0 - tre3_1_0;
			 tim2_1_1 = tim3_0_0 + tim3_1_0;
		    }
		    c_re(inout[10 * stride]) = tre2_0_0 + tre2_0_1;
		    c_im(inout[10 * stride]) = tim2_0_0 + tim2_0_1;
		    c_re(inout[42 * stride]) = tre2_0_0 - tre2_0_1;
		    c_im(inout[42 * stride]) = tim2_0_0 - tim2_0_1;
		    c_re(inout[26 * stride]) = tre2_1_0 + tim2_1_1;
		    c_im(inout[26 * stride]) = tim2_1_0 - tre2_1_1;
		    c_re(inout[58 * stride]) = tre2_1_0 - tim2_1_1;
		    c_im(inout[58 * stride]) = tim2_1_0 + tre2_1_1;
	       }
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_0_2;
	       FFTW_REAL tim1_0_2;
	       FFTW_REAL tre1_0_3;
	       FFTW_REAL tim1_0_3;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       FFTW_REAL tre1_1_2;
	       FFTW_REAL tim1_1_2;
	       FFTW_REAL tre1_1_3;
	       FFTW_REAL tim1_1_3;
	       {
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tre0_3_4) + (((FFTW_REAL) FFTW_K923879532) * tim0_3_4);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tim0_3_4) - (((FFTW_REAL) FFTW_K923879532) * tre0_3_4);
		    tre1_0_0 = tre0_3_0 + tre2_1_0;
		    tim1_0_0 = tim0_3_0 + tim2_1_0;
		    tre1_1_0 = tre0_3_0 - tre2_1_0;
		    tim1_1_0 = tim0_3_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K956940335) * tre0_3_1) + (((FFTW_REAL) FFTW_K290284677) * tim0_3_1);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K956940335) * tim0_3_1) - (((FFTW_REAL) FFTW_K290284677) * tre0_3_1);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K098017140) * tre0_3_5) + (((FFTW_REAL) FFTW_K995184726) * tim0_3_5);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K098017140) * tim0_3_5) - (((FFTW_REAL) FFTW_K995184726) * tre0_3_5);
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K831469612) * tre0_3_2) + (((FFTW_REAL) FFTW_K555570233) * tim0_3_2);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K831469612) * tim0_3_2) - (((FFTW_REAL) FFTW_K555570233) * tre0_3_2);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K980785280) * tim0_3_6) - (((FFTW_REAL) FFTW_K195090322) * tre0_3_6);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K195090322) * tim0_3_6) + (((FFTW_REAL) FFTW_K980785280) * tre0_3_6);
		    tre1_0_2 = tre2_0_0 + tre2_1_0;
		    tim1_0_2 = tim2_0_0 - tim2_1_0;
		    tre1_1_2 = tre2_0_0 - tre2_1_0;
		    tim1_1_2 = tim2_0_0 + tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K634393284) * tre0_3_3) + (((FFTW_REAL) FFTW_K773010453) * tim0_3_3);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K634393284) * tim0_3_3) - (((FFTW_REAL) FFTW_K773010453) * tre0_3_3);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K881921264) * tim0_3_7) - (((FFTW_REAL) FFTW_K471396736) * tre0_3_7);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K471396736) * tim0_3_7) + (((FFTW_REAL) FFTW_K881921264) * tre0_3_7);
		    tre1_0_3 = tre2_0_0 + tre2_1_0;
		    tim1_0_3 = tim2_0_0 - tim2_1_0;
		    tre1_1_3 = tre2_0_0 - tre2_1_0;
		    tim1_1_3 = tim2_0_0 + tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_0_0 + tre1_0_2;
		    tim2_0_0 = tim1_0_0 + tim1_0_2;
		    tre2_1_0 = tre1_0_0 - tre1_0_2;
		    tim2_1_0 = tim1_0_0 - tim1_0_2;
		    tre2_0_1 = tre1_0_1 + tre1_0_3;
		    tim2_0_1 = tim1_0_1 + tim1_0_3;
		    tre2_1_1 = tre1_0_1 - tre1_0_3;
		    tim2_1_1 = tim1_0_1 - tim1_0_3;
		    c_re(inout[3 * stride]) = tre2_0_0 + tre2_0_1;
		    c_im(inout[3 * stride]) = tim2_0_0 + tim2_0_1;
		    c_re(inout[35 * stride]) = tre2_0_0 - tre2_0_1;
		    c_im(inout[35 * stride]) = tim2_0_0 - tim2_0_1;
		    c_re(inout[19 * stride]) = tre2_1_0 + tim2_1_1;
		    c_im(inout[19 * stride]) = tim2_1_0 - tre2_1_1;
		    c_re(inout[51 * stride]) = tre2_1_0 - tim2_1_1;
		    c_im(inout[51 * stride]) = tim2_1_0 + tre2_1_1;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_1_0 + tim1_1_2;
		    tim2_0_0 = tim1_1_0 - tre1_1_2;
		    tre2_1_0 = tre1_1_0 - tim1_1_2;
		    tim2_1_0 = tim1_1_0 + tre1_1_2;
		    {
			 FFTW_REAL tre3_0_0;
			 FFTW_REAL tim3_0_0;
			 FFTW_REAL tre3_1_0;
			 FFTW_REAL tim3_1_0;
			 tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 + tim1_1_1);
			 tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 - tre1_1_1);
			 tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 - tre1_1_3);
			 tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 + tre1_1_3);
			 tre2_0_1 = tre3_0_0 + tre3_1_0;
			 tim2_0_1 = tim3_0_0 - tim3_1_0;
			 tre2_1_1 = tre3_0_0 - tre3_1_0;
			 tim2_1_1 = tim3_0_0 + tim3_1_0;
		    }
		    c_re(inout[11 * stride]) = tre2_0_0 + tre2_0_1;
		    c_im(inout[11 * stride]) = tim2_0_0 + tim2_0_1;
		    c_re(inout[43 * stride]) = tre2_0_0 - tre2_0_1;
		    c_im(inout[43 * stride]) = tim2_0_0 - tim2_0_1;
		    c_re(inout[27 * stride]) = tre2_1_0 + tim2_1_1;
		    c_im(inout[27 * stride]) = tim2_1_0 - tre2_1_1;
		    c_re(inout[59 * stride]) = tre2_1_0 - tim2_1_1;
		    c_im(inout[59 * stride]) = tim2_1_0 + tre2_1_1;
	       }
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_0_2;
	       FFTW_REAL tim1_0_2;
	       FFTW_REAL tre1_0_3;
	       FFTW_REAL tim1_0_3;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       FFTW_REAL tre1_1_2;
	       FFTW_REAL tim1_1_2;
	       FFTW_REAL tre1_1_3;
	       FFTW_REAL tim1_1_3;
	       tre1_0_0 = tre0_4_0 + tim0_4_4;
	       tim1_0_0 = tim0_4_0 - tre0_4_4;
	       tre1_1_0 = tre0_4_0 - tim0_4_4;
	       tim1_1_0 = tim0_4_0 + tre0_4_4;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K923879532) * tre0_4_1) + (((FFTW_REAL) FFTW_K382683432) * tim0_4_1);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K923879532) * tim0_4_1) - (((FFTW_REAL) FFTW_K382683432) * tre0_4_1);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K923879532) * tim0_4_5) - (((FFTW_REAL) FFTW_K382683432) * tre0_4_5);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tim0_4_5) + (((FFTW_REAL) FFTW_K923879532) * tre0_4_5);
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 - tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 + tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_4_2 + tim0_4_2);
		    tim2_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_4_2 - tre0_4_2);
		    tre2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_4_6 - tre0_4_6);
		    tim2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_4_6 + tre0_4_6);
		    tre1_0_2 = tre2_0_0 + tre2_1_0;
		    tim1_0_2 = tim2_0_0 - tim2_1_0;
		    tre1_1_2 = tre2_0_0 - tre2_1_0;
		    tim1_1_2 = tim2_0_0 + tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K382683432) * tre0_4_3) + (((FFTW_REAL) FFTW_K923879532) * tim0_4_3);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K382683432) * tim0_4_3) - (((FFTW_REAL) FFTW_K923879532) * tre0_4_3);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tim0_4_7) - (((FFTW_REAL) FFTW_K923879532) * tre0_4_7);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K923879532) * tim0_4_7) + (((FFTW_REAL) FFTW_K382683432) * tre0_4_7);
		    tre1_0_3 = tre2_0_0 + tre2_1_0;
		    tim1_0_3 = tim2_0_0 - tim2_1_0;
		    tre1_1_3 = tre2_0_0 - tre2_1_0;
		    tim1_1_3 = tim2_0_0 + tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_0_0 + tre1_0_2;
		    tim2_0_0 = tim1_0_0 + tim1_0_2;
		    tre2_1_0 = tre1_0_0 - tre1_0_2;
		    tim2_1_0 = tim1_0_0 - tim1_0_2;
		    tre2_0_1 = tre1_0_1 + tre1_0_3;
		    tim2_0_1 = tim1_0_1 + tim1_0_3;
		    tre2_1_1 = tre1_0_1 - tre1_0_3;
		    tim2_1_1 = tim1_0_1 - tim1_0_3;
		    c_re(inout[4 * stride]) = tre2_0_0 + tre2_0_1;
		    c_im(inout[4 * stride]) = tim2_0_0 + tim2_0_1;
		    c_re(inout[36 * stride]) = tre2_0_0 - tre2_0_1;
		    c_im(inout[36 * stride]) = tim2_0_0 - tim2_0_1;
		    c_re(inout[20 * stride]) = tre2_1_0 + tim2_1_1;
		    c_im(inout[20 * stride]) = tim2_1_0 - tre2_1_1;
		    c_re(inout[52 * stride]) = tre2_1_0 - tim2_1_1;
		    c_im(inout[52 * stride]) = tim2_1_0 + tre2_1_1;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_1_0 + tim1_1_2;
		    tim2_0_0 = tim1_1_0 - tre1_1_2;
		    tre2_1_0 = tre1_1_0 - tim1_1_2;
		    tim2_1_0 = tim1_1_0 + tre1_1_2;
		    {
			 FFTW_REAL tre3_0_0;
			 FFTW_REAL tim3_0_0;
			 FFTW_REAL tre3_1_0;
			 FFTW_REAL tim3_1_0;
			 tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 + tim1_1_1);
			 tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 - tre1_1_1);
			 tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 - tre1_1_3);
			 tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 + tre1_1_3);
			 tre2_0_1 = tre3_0_0 + tre3_1_0;
			 tim2_0_1 = tim3_0_0 - tim3_1_0;
			 tre2_1_1 = tre3_0_0 - tre3_1_0;
			 tim2_1_1 = tim3_0_0 + tim3_1_0;
		    }
		    c_re(inout[12 * stride]) = tre2_0_0 + tre2_0_1;
		    c_im(inout[12 * stride]) = tim2_0_0 + tim2_0_1;
		    c_re(inout[44 * stride]) = tre2_0_0 - tre2_0_1;
		    c_im(inout[44 * stride]) = tim2_0_0 - tim2_0_1;
		    c_re(inout[28 * stride]) = tre2_1_0 + tim2_1_1;
		    c_im(inout[28 * stride]) = tim2_1_0 - tre2_1_1;
		    c_re(inout[60 * stride]) = tre2_1_0 - tim2_1_1;
		    c_im(inout[60 * stride]) = tim2_1_0 + tre2_1_1;
	       }
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_0_2;
	       FFTW_REAL tim1_0_2;
	       FFTW_REAL tre1_0_3;
	       FFTW_REAL tim1_0_3;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       FFTW_REAL tre1_1_2;
	       FFTW_REAL tim1_1_2;
	       FFTW_REAL tre1_1_3;
	       FFTW_REAL tim1_1_3;
	       {
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_1_0 = (((FFTW_REAL) FFTW_K923879532) * tim0_5_4) - (((FFTW_REAL) FFTW_K382683432) * tre0_5_4);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tim0_5_4) + (((FFTW_REAL) FFTW_K923879532) * tre0_5_4);
		    tre1_0_0 = tre0_5_0 + tre2_1_0;
		    tim1_0_0 = tim0_5_0 - tim2_1_0;
		    tre1_1_0 = tre0_5_0 - tre2_1_0;
		    tim1_1_0 = tim0_5_0 + tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K881921264) * tre0_5_1) + (((FFTW_REAL) FFTW_K471396736) * tim0_5_1);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K881921264) * tim0_5_1) - (((FFTW_REAL) FFTW_K471396736) * tre0_5_1);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K634393284) * tim0_5_5) - (((FFTW_REAL) FFTW_K773010453) * tre0_5_5);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K773010453) * tim0_5_5) + (((FFTW_REAL) FFTW_K634393284) * tre0_5_5);
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 - tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 + tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K555570233) * tre0_5_2) + (((FFTW_REAL) FFTW_K831469612) * tim0_5_2);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K555570233) * tim0_5_2) - (((FFTW_REAL) FFTW_K831469612) * tre0_5_2);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K195090322) * tim0_5_6) - (((FFTW_REAL) FFTW_K980785280) * tre0_5_6);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K980785280) * tim0_5_6) + (((FFTW_REAL) FFTW_K195090322) * tre0_5_6);
		    tre1_0_2 = tre2_0_0 + tre2_1_0;
		    tim1_0_2 = tim2_0_0 - tim2_1_0;
		    tre1_1_2 = tre2_0_0 - tre2_1_0;
		    tim1_1_2 = tim2_0_0 + tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K098017140) * tre0_5_3) + (((FFTW_REAL) FFTW_K995184726) * tim0_5_3);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K098017140) * tim0_5_3) - (((FFTW_REAL) FFTW_K995184726) * tre0_5_3);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K956940335) * tre0_5_7) + (((FFTW_REAL) FFTW_K290284677) * tim0_5_7);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K290284677) * tre0_5_7) - (((FFTW_REAL) FFTW_K956940335) * tim0_5_7);
		    tre1_0_3 = tre2_0_0 - tre2_1_0;
		    tim1_0_3 = tim2_0_0 + tim2_1_0;
		    tre1_1_3 = tre2_0_0 + tre2_1_0;
		    tim1_1_3 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_0_0 + tre1_0_2;
		    tim2_0_0 = tim1_0_0 + tim1_0_2;
		    tre2_1_0 = tre1_0_0 - tre1_0_2;
		    tim2_1_0 = tim1_0_0 - tim1_0_2;
		    tre2_0_1 = tre1_0_1 + tre1_0_3;
		    tim2_0_1 = tim1_0_1 + tim1_0_3;
		    tre2_1_1 = tre1_0_1 - tre1_0_3;
		    tim2_1_1 = tim1_0_1 - tim1_0_3;
		    c_re(inout[5 * stride]) = tre2_0_0 + tre2_0_1;
		    c_im(inout[5 * stride]) = tim2_0_0 + tim2_0_1;
		    c_re(inout[37 * stride]) = tre2_0_0 - tre2_0_1;
		    c_im(inout[37 * stride]) = tim2_0_0 - tim2_0_1;
		    c_re(inout[21 * stride]) = tre2_1_0 + tim2_1_1;
		    c_im(inout[21 * stride]) = tim2_1_0 - tre2_1_1;
		    c_re(inout[53 * stride]) = tre2_1_0 - tim2_1_1;
		    c_im(inout[53 * stride]) = tim2_1_0 + tre2_1_1;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_1_0 + tim1_1_2;
		    tim2_0_0 = tim1_1_0 - tre1_1_2;
		    tre2_1_0 = tre1_1_0 - tim1_1_2;
		    tim2_1_0 = tim1_1_0 + tre1_1_2;
		    {
			 FFTW_REAL tre3_0_0;
			 FFTW_REAL tim3_0_0;
			 FFTW_REAL tre3_1_0;
			 FFTW_REAL tim3_1_0;
			 tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 + tim1_1_1);
			 tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 - tre1_1_1);
			 tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 - tre1_1_3);
			 tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 + tre1_1_3);
			 tre2_0_1 = tre3_0_0 + tre3_1_0;
			 tim2_0_1 = tim3_0_0 - tim3_1_0;
			 tre2_1_1 = tre3_0_0 - tre3_1_0;
			 tim2_1_1 = tim3_0_0 + tim3_1_0;
		    }
		    c_re(inout[13 * stride]) = tre2_0_0 + tre2_0_1;
		    c_im(inout[13 * stride]) = tim2_0_0 + tim2_0_1;
		    c_re(inout[45 * stride]) = tre2_0_0 - tre2_0_1;
		    c_im(inout[45 * stride]) = tim2_0_0 - tim2_0_1;
		    c_re(inout[29 * stride]) = tre2_1_0 + tim2_1_1;
		    c_im(inout[29 * stride]) = tim2_1_0 - tre2_1_1;
		    c_re(inout[61 * stride]) = tre2_1_0 - tim2_1_1;
		    c_im(inout[61 * stride]) = tim2_1_0 + tre2_1_1;
	       }
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_0_2;
	       FFTW_REAL tim1_0_2;
	       FFTW_REAL tre1_0_3;
	       FFTW_REAL tim1_0_3;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       FFTW_REAL tre1_1_2;
	       FFTW_REAL tim1_1_2;
	       FFTW_REAL tre1_1_3;
	       FFTW_REAL tim1_1_3;
	       {
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_6_4 - tre0_6_4);
		    tim2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_6_4 + tre0_6_4);
		    tre1_0_0 = tre0_6_0 + tre2_1_0;
		    tim1_0_0 = tim0_6_0 - tim2_1_0;
		    tre1_1_0 = tre0_6_0 - tre2_1_0;
		    tim1_1_0 = tim0_6_0 + tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K831469612) * tre0_6_1) + (((FFTW_REAL) FFTW_K555570233) * tim0_6_1);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K831469612) * tim0_6_1) - (((FFTW_REAL) FFTW_K555570233) * tre0_6_1);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K195090322) * tim0_6_5) - (((FFTW_REAL) FFTW_K980785280) * tre0_6_5);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K980785280) * tim0_6_5) + (((FFTW_REAL) FFTW_K195090322) * tre0_6_5);
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 - tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 + tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K382683432) * tre0_6_2) + (((FFTW_REAL) FFTW_K923879532) * tim0_6_2);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K382683432) * tim0_6_2) - (((FFTW_REAL) FFTW_K923879532) * tre0_6_2);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K923879532) * tre0_6_6) + (((FFTW_REAL) FFTW_K382683432) * tim0_6_6);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tre0_6_6) - (((FFTW_REAL) FFTW_K923879532) * tim0_6_6);
		    tre1_0_2 = tre2_0_0 - tre2_1_0;
		    tim1_0_2 = tim2_0_0 + tim2_1_0;
		    tre1_1_2 = tre2_0_0 + tre2_1_0;
		    tim1_1_2 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K980785280) * tim0_6_3) - (((FFTW_REAL) FFTW_K195090322) * tre0_6_3);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K195090322) * tim0_6_3) + (((FFTW_REAL) FFTW_K980785280) * tre0_6_3);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K555570233) * tre0_6_7) + (((FFTW_REAL) FFTW_K831469612) * tim0_6_7);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K831469612) * tre0_6_7) - (((FFTW_REAL) FFTW_K555570233) * tim0_6_7);
		    tre1_0_3 = tre2_0_0 - tre2_1_0;
		    tim1_0_3 = tim2_1_0 - tim2_0_0;
		    tre1_1_3 = tre2_0_0 + tre2_1_0;
		    tim1_1_3 = (-(tim2_0_0 + tim2_1_0));
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_0_0 + tre1_0_2;
		    tim2_0_0 = tim1_0_0 + tim1_0_2;
		    tre2_1_0 = tre1_0_0 - tre1_0_2;
		    tim2_1_0 = tim1_0_0 - tim1_0_2;
		    tre2_0_1 = tre1_0_1 + tre1_0_3;
		    tim2_0_1 = tim1_0_1 + tim1_0_3;
		    tre2_1_1 = tre1_0_1 - tre1_0_3;
		    tim2_1_1 = tim1_0_1 - tim1_0_3;
		    c_re(inout[6 * stride]) = tre2_0_0 + tre2_0_1;
		    c_im(inout[6 * stride]) = tim2_0_0 + tim2_0_1;
		    c_re(inout[38 * stride]) = tre2_0_0 - tre2_0_1;
		    c_im(inout[38 * stride]) = tim2_0_0 - tim2_0_1;
		    c_re(inout[22 * stride]) = tre2_1_0 + tim2_1_1;
		    c_im(inout[22 * stride]) = tim2_1_0 - tre2_1_1;
		    c_re(inout[54 * stride]) = tre2_1_0 - tim2_1_1;
		    c_im(inout[54 * stride]) = tim2_1_0 + tre2_1_1;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_1_0 + tim1_1_2;
		    tim2_0_0 = tim1_1_0 - tre1_1_2;
		    tre2_1_0 = tre1_1_0 - tim1_1_2;
		    tim2_1_0 = tim1_1_0 + tre1_1_2;
		    {
			 FFTW_REAL tre3_0_0;
			 FFTW_REAL tim3_0_0;
			 FFTW_REAL tre3_1_0;
			 FFTW_REAL tim3_1_0;
			 tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 + tim1_1_1);
			 tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 - tre1_1_1);
			 tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 - tre1_1_3);
			 tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 + tre1_1_3);
			 tre2_0_1 = tre3_0_0 + tre3_1_0;
			 tim2_0_1 = tim3_0_0 - tim3_1_0;
			 tre2_1_1 = tre3_0_0 - tre3_1_0;
			 tim2_1_1 = tim3_0_0 + tim3_1_0;
		    }
		    c_re(inout[14 * stride]) = tre2_0_0 + tre2_0_1;
		    c_im(inout[14 * stride]) = tim2_0_0 + tim2_0_1;
		    c_re(inout[46 * stride]) = tre2_0_0 - tre2_0_1;
		    c_im(inout[46 * stride]) = tim2_0_0 - tim2_0_1;
		    c_re(inout[30 * stride]) = tre2_1_0 + tim2_1_1;
		    c_im(inout[30 * stride]) = tim2_1_0 - tre2_1_1;
		    c_re(inout[62 * stride]) = tre2_1_0 - tim2_1_1;
		    c_im(inout[62 * stride]) = tim2_1_0 + tre2_1_1;
	       }
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_0_2;
	       FFTW_REAL tim1_0_2;
	       FFTW_REAL tre1_0_3;
	       FFTW_REAL tim1_0_3;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       FFTW_REAL tre1_1_2;
	       FFTW_REAL tim1_1_2;
	       FFTW_REAL tre1_1_3;
	       FFTW_REAL tim1_1_3;
	       {
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tim0_7_4) - (((FFTW_REAL) FFTW_K923879532) * tre0_7_4);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K923879532) * tim0_7_4) + (((FFTW_REAL) FFTW_K382683432) * tre0_7_4);
		    tre1_0_0 = tre0_7_0 + tre2_1_0;
		    tim1_0_0 = tim0_7_0 - tim2_1_0;
		    tre1_1_0 = tre0_7_0 - tre2_1_0;
		    tim1_1_0 = tim0_7_0 + tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K773010453) * tre0_7_1) + (((FFTW_REAL) FFTW_K634393284) * tim0_7_1);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K773010453) * tim0_7_1) - (((FFTW_REAL) FFTW_K634393284) * tre0_7_1);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K956940335) * tre0_7_5) + (((FFTW_REAL) FFTW_K290284677) * tim0_7_5);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K290284677) * tre0_7_5) - (((FFTW_REAL) FFTW_K956940335) * tim0_7_5);
		    tre1_0_1 = tre2_0_0 - tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 + tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K195090322) * tre0_7_2) + (((FFTW_REAL) FFTW_K980785280) * tim0_7_2);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K195090322) * tim0_7_2) - (((FFTW_REAL) FFTW_K980785280) * tre0_7_2);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K555570233) * tre0_7_6) + (((FFTW_REAL) FFTW_K831469612) * tim0_7_6);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K831469612) * tre0_7_6) - (((FFTW_REAL) FFTW_K555570233) * tim0_7_6);
		    tre1_0_2 = tre2_0_0 - tre2_1_0;
		    tim1_0_2 = tim2_0_0 + tim2_1_0;
		    tre1_1_2 = tre2_0_0 + tre2_1_0;
		    tim1_1_2 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K881921264) * tim0_7_3) - (((FFTW_REAL) FFTW_K471396736) * tre0_7_3);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K471396736) * tim0_7_3) + (((FFTW_REAL) FFTW_K881921264) * tre0_7_3);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K098017140) * tre0_7_7) - (((FFTW_REAL) FFTW_K995184726) * tim0_7_7);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K098017140) * tim0_7_7) + (((FFTW_REAL) FFTW_K995184726) * tre0_7_7);
		    tre1_0_3 = tre2_0_0 + tre2_1_0;
		    tim1_0_3 = tim2_1_0 - tim2_0_0;
		    tre1_1_3 = tre2_0_0 - tre2_1_0;
		    tim1_1_3 = (-(tim2_0_0 + tim2_1_0));
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_0_0 + tre1_0_2;
		    tim2_0_0 = tim1_0_0 + tim1_0_2;
		    tre2_1_0 = tre1_0_0 - tre1_0_2;
		    tim2_1_0 = tim1_0_0 - tim1_0_2;
		    tre2_0_1 = tre1_0_1 + tre1_0_3;
		    tim2_0_1 = tim1_0_1 + tim1_0_3;
		    tre2_1_1 = tre1_0_1 - tre1_0_3;
		    tim2_1_1 = tim1_0_1 - tim1_0_3;
		    c_re(inout[7 * stride]) = tre2_0_0 + tre2_0_1;
		    c_im(inout[7 * stride]) = tim2_0_0 + tim2_0_1;
		    c_re(inout[39 * stride]) = tre2_0_0 - tre2_0_1;
		    c_im(inout[39 * stride]) = tim2_0_0 - tim2_0_1;
		    c_re(inout[23 * stride]) = tre2_1_0 + tim2_1_1;
		    c_im(inout[23 * stride]) = tim2_1_0 - tre2_1_1;
		    c_re(inout[55 * stride]) = tre2_1_0 - tim2_1_1;
		    c_im(inout[55 * stride]) = tim2_1_0 + tre2_1_1;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_1_0 + tim1_1_2;
		    tim2_0_0 = tim1_1_0 - tre1_1_2;
		    tre2_1_0 = tre1_1_0 - tim1_1_2;
		    tim2_1_0 = tim1_1_0 + tre1_1_2;
		    {
			 FFTW_REAL tre3_0_0;
			 FFTW_REAL tim3_0_0;
			 FFTW_REAL tre3_1_0;
			 FFTW_REAL tim3_1_0;
			 tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 + tim1_1_1);
			 tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 - tre1_1_1);
			 tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 - tre1_1_3);
			 tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_3 + tre1_1_3);
			 tre2_0_1 = tre3_0_0 + tre3_1_0;
			 tim2_0_1 = tim3_0_0 - tim3_1_0;
			 tre2_1_1 = tre3_0_0 - tre3_1_0;
			 tim2_1_1 = tim3_0_0 + tim3_1_0;
		    }
		    c_re(inout[15 * stride]) = tre2_0_0 + tre2_0_1;
		    c_im(inout[15 * stride]) = tim2_0_0 + tim2_0_1;
		    c_re(inout[47 * stride]) = tre2_0_0 - tre2_0_1;
		    c_im(inout[47 * stride]) = tim2_0_0 - tim2_0_1;
		    c_re(inout[31 * stride]) = tre2_1_0 + tim2_1_1;
		    c_im(inout[31 * stride]) = tim2_1_0 - tre2_1_1;
		    c_re(inout[63 * stride]) = tre2_1_0 - tim2_1_1;
		    c_im(inout[63 * stride]) = tim2_1_0 + tre2_1_1;
	       }
	  }
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 102 FP additions and 60 FP multiplications */

void fftw_twiddle_7(FFTW_COMPLEX *A, const FFTW_COMPLEX *W, int stride, int m, int dist)
{
     int i;
     COMPLEX *inout;
     inout = A;
     for (i = 0; i < m; i = i + 1, inout = inout + dist, W = W + 6) {
	  FFTW_REAL tre0_0_0;
	  FFTW_REAL tim0_0_0;
	  FFTW_REAL tre0_1_0;
	  FFTW_REAL tim0_1_0;
	  FFTW_REAL tre0_2_0;
	  FFTW_REAL tim0_2_0;
	  FFTW_REAL tre0_3_0;
	  FFTW_REAL tim0_3_0;
	  FFTW_REAL tre0_4_0;
	  FFTW_REAL tim0_4_0;
	  FFTW_REAL tre0_5_0;
	  FFTW_REAL tim0_5_0;
	  FFTW_REAL tre0_6_0;
	  FFTW_REAL tim0_6_0;
	  tre0_0_0 = c_re(inout[0]);
	  tim0_0_0 = c_im(inout[0]);
	  {
	       FFTW_REAL tr;
	       FFTW_REAL ti;
	       FFTW_REAL twr;
	       FFTW_REAL twi;
	       tr = c_re(inout[stride]);
	       ti = c_im(inout[stride]);
	       twr = c_re(W[0]);
	       twi = c_im(W[0]);
	       tre0_1_0 = (tr * twr) - (ti * twi);
	       tim0_1_0 = (tr * twi) + (ti * twr);
	  }
	  {
	       FFTW_REAL tr;
	       FFTW_REAL ti;
	       FFTW_REAL twr;
	       FFTW_REAL twi;
	       tr = c_re(inout[2 * stride]);
	       ti = c_im(inout[2 * stride]);
	       twr = c_re(W[1]);
	       twi = c_im(W[1]);
	       tre0_2_0 = (tr * twr) - (ti * twi);
	       tim0_2_0 = (tr * twi) + (ti * twr);
	  }
	  {
	       FFTW_REAL tr;
	       FFTW_REAL ti;
	       FFTW_REAL twr;
	       FFTW_REAL twi;
	       tr = c_re(inout[3 * stride]);
	       ti = c_im(inout[3 * stride]);
	       twr = c_re(W[2]);
	       twi = c_im(W[2]);
	       tre0_3_0 = (tr * twr) - (ti * twi);
	       tim0_3_0 = (tr * twi) + (ti * twr);
	  }
	  {
	       FFTW_REAL tr;
	       FFTW_REAL ti;
	       FFTW_REAL twr;
	       FFTW_REAL twi;
	       tr = c_re(inout[4 * stride]);
	       ti = c_im(inout[4 * stride]);
	       twr = c_re(W[3]);
	       twi = c_im(W[3]);
	       tre0_4_0 = (tr * twr) - (ti * twi);
	       tim0_4_0 = (tr * twi) + (ti * twr);
	  }
	  {
	       FFTW_REAL tr;
	       FFTW_REAL ti;
	       FFTW_REAL twr;
	       FFTW_REAL twi;
	       tr = c_re(inout[5 * stride]);
	       ti = c_im(inout[5 * stride]);
	       twr = c_re(W[4]);
	       twi = c_im(W[4]);
	       tre0_5_0 = (tr * twr) - (ti * twi);
	       tim0_5_0 = (tr * twi) + (ti * twr);
	  }
	  {
	       FFTW_REAL tr;
	       FFTW_REAL ti;
	       FFTW_REAL twr;
	       FFTW_REAL twi;
	       tr = c_re(inout[6 * stride]);
	       ti = c_im(inout[6 * stride]);
	       twr = c_re(W[5]);
	       twi = c_im(W[5]);
	       tre0_6_0 = (tr * twr) - (ti * twi);
	       tim0_6_0 = (tr * twi) + (ti * twr);
	  }
	  c_re(inout[0]) = tre0_0_0 + tre0_1_0 + tre0_2_0 + tre0_3_0 + tre0_4_0 + tre0_5_0 + tre0_6_0;
	  c_im(inout[0]) = tim0_0_0 + tim0_1_0 + tim0_2_0 + tim0_3_0 + tim0_4_0 + tim0_5_0 + tim0_6_0;
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tre1_1_0;
	       tre1_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K623489801) * (tre0_1_0 + tre0_6_0)) - (((FFTW_REAL) FFTW_K900968867) * (tre0_3_0 + tre0_4_0)) - (((FFTW_REAL) FFTW_K222520933) * (tre0_2_0 + tre0_5_0));
	       tre1_1_0 = (((FFTW_REAL) FFTW_K781831482) * (tim0_1_0 - tim0_6_0)) + (((FFTW_REAL) FFTW_K974927912) * (tim0_2_0 - tim0_5_0)) + (((FFTW_REAL) FFTW_K433883739) * (tim0_3_0 - tim0_4_0));
	       c_re(inout[stride]) = tre1_0_0 + tre1_1_0;
	       c_re(inout[6 * stride]) = tre1_0_0 - tre1_1_0;
	  }
	  {
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tim1_1_0;
	       tim1_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K623489801) * (tim0_1_0 + tim0_6_0)) - (((FFTW_REAL) FFTW_K900968867) * (tim0_3_0 + tim0_4_0)) - (((FFTW_REAL) FFTW_K222520933) * (tim0_2_0 + tim0_5_0));
	       tim1_1_0 = (((FFTW_REAL) FFTW_K781831482) * (tre0_6_0 - tre0_1_0)) + (((FFTW_REAL) FFTW_K974927912) * (tre0_5_0 - tre0_2_0)) + (((FFTW_REAL) FFTW_K433883739) * (tre0_4_0 - tre0_3_0));
	       c_im(inout[stride]) = tim1_0_0 + tim1_1_0;
	       c_im(inout[6 * stride]) = tim1_0_0 - tim1_1_0;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tre1_1_0;
	       tre1_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K623489801) * (tre0_3_0 + tre0_4_0)) - (((FFTW_REAL) FFTW_K900968867) * (tre0_2_0 + tre0_5_0)) - (((FFTW_REAL) FFTW_K222520933) * (tre0_1_0 + tre0_6_0));
	       tre1_1_0 = (((FFTW_REAL) FFTW_K974927912) * (tim0_1_0 - tim0_6_0)) + (((FFTW_REAL) FFTW_K433883739) * (tim0_5_0 - tim0_2_0)) + (((FFTW_REAL) FFTW_K781831482) * (tim0_4_0 - tim0_3_0));
	       c_re(inout[2 * stride]) = tre1_0_0 + tre1_1_0;
	       c_re(inout[5 * stride]) = tre1_0_0 - tre1_1_0;
	  }
	  {
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tim1_1_0;
	       tim1_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K623489801) * (tim0_3_0 + tim0_4_0)) - (((FFTW_REAL) FFTW_K900968867) * (tim0_2_0 + tim0_5_0)) - (((FFTW_REAL) FFTW_K222520933) * (tim0_1_0 + tim0_6_0));
	       tim1_1_0 = (((FFTW_REAL) FFTW_K974927912) * (tre0_6_0 - tre0_1_0)) + (((FFTW_REAL) FFTW_K433883739) * (tre0_2_0 - tre0_5_0)) + (((FFTW_REAL) FFTW_K781831482) * (tre0_3_0 - tre0_4_0));
	       c_im(inout[2 * stride]) = tim1_0_0 + tim1_1_0;
	       c_im(inout[5 * stride]) = tim1_0_0 - tim1_1_0;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tre1_1_0;
	       tre1_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K623489801) * (tre0_2_0 + tre0_5_0)) - (((FFTW_REAL) FFTW_K222520933) * (tre0_3_0 + tre0_4_0)) - (((FFTW_REAL) FFTW_K900968867) * (tre0_1_0 + tre0_6_0));
	       tre1_1_0 = (((FFTW_REAL) FFTW_K433883739) * (tim0_1_0 - tim0_6_0)) + (((FFTW_REAL) FFTW_K781831482) * (tim0_5_0 - tim0_2_0)) + (((FFTW_REAL) FFTW_K974927912) * (tim0_3_0 - tim0_4_0));
	       c_re(inout[3 * stride]) = tre1_0_0 + tre1_1_0;
	       c_re(inout[4 * stride]) = tre1_0_0 - tre1_1_0;
	  }
	  {
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tim1_1_0;
	       tim1_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K623489801) * (tim0_2_0 + tim0_5_0)) - (((FFTW_REAL) FFTW_K222520933) * (tim0_3_0 + tim0_4_0)) - (((FFTW_REAL) FFTW_K900968867) * (tim0_1_0 + tim0_6_0));
	       tim1_1_0 = (((FFTW_REAL) FFTW_K433883739) * (tre0_6_0 - tre0_1_0)) + (((FFTW_REAL) FFTW_K781831482) * (tre0_2_0 - tre0_5_0)) + (((FFTW_REAL) FFTW_K974927912) * (tre0_4_0 - tre0_3_0));
	       c_im(inout[3 * stride]) = tim1_0_0 + tim1_1_0;
	       c_im(inout[4 * stride]) = tim1_0_0 - tim1_1_0;
	  }
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 66 FP additions and 32 FP multiplications */

void fftw_twiddle_8(FFTW_COMPLEX *A, const FFTW_COMPLEX *W, int stride, int m, int dist)
{
     int i;
     COMPLEX *inout;
     inout = A;
     for (i = 0; i < m; i = i + 1, inout = inout + dist, W = W + 7) {
	  FFTW_REAL tre0_0_0;
	  FFTW_REAL tim0_0_0;
	  FFTW_REAL tre0_0_1;
	  FFTW_REAL tim0_0_1;
	  FFTW_REAL tre0_0_2;
	  FFTW_REAL tim0_0_2;
	  FFTW_REAL tre0_0_3;
	  FFTW_REAL tim0_0_3;
	  FFTW_REAL tre0_1_0;
	  FFTW_REAL tim0_1_0;
	  FFTW_REAL tre0_1_1;
	  FFTW_REAL tim0_1_1;
	  FFTW_REAL tre0_1_2;
	  FFTW_REAL tim0_1_2;
	  FFTW_REAL tre0_1_3;
	  FFTW_REAL tim0_1_3;
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       tre1_0_0 = c_re(inout[0]);
	       tim1_0_0 = c_im(inout[0]);
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[4 * stride]);
		    ti = c_im(inout[4 * stride]);
		    twr = c_re(W[3]);
		    twi = c_im(W[3]);
		    tre1_1_0 = (tr * twr) - (ti * twi);
		    tim1_1_0 = (tr * twi) + (ti * twr);
	       }
	       tre0_0_0 = tre1_0_0 + tre1_1_0;
	       tim0_0_0 = tim1_0_0 + tim1_1_0;
	       tre0_1_0 = tre1_0_0 - tre1_1_0;
	       tim0_1_0 = tim1_0_0 - tim1_1_0;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[stride]);
		    ti = c_im(inout[stride]);
		    twr = c_re(W[0]);
		    twi = c_im(W[0]);
		    tre1_0_0 = (tr * twr) - (ti * twi);
		    tim1_0_0 = (tr * twi) + (ti * twr);
	       }
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[5 * stride]);
		    ti = c_im(inout[5 * stride]);
		    twr = c_re(W[4]);
		    twi = c_im(W[4]);
		    tre1_1_0 = (tr * twr) - (ti * twi);
		    tim1_1_0 = (tr * twi) + (ti * twr);
	       }
	       tre0_0_1 = tre1_0_0 + tre1_1_0;
	       tim0_0_1 = tim1_0_0 + tim1_1_0;
	       tre0_1_1 = tre1_0_0 - tre1_1_0;
	       tim0_1_1 = tim1_0_0 - tim1_1_0;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[2 * stride]);
		    ti = c_im(inout[2 * stride]);
		    twr = c_re(W[1]);
		    twi = c_im(W[1]);
		    tre1_0_0 = (tr * twr) - (ti * twi);
		    tim1_0_0 = (tr * twi) + (ti * twr);
	       }
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[6 * stride]);
		    ti = c_im(inout[6 * stride]);
		    twr = c_re(W[5]);
		    twi = c_im(W[5]);
		    tre1_1_0 = (tr * twr) - (ti * twi);
		    tim1_1_0 = (tr * twi) + (ti * twr);
	       }
	       tre0_0_2 = tre1_0_0 + tre1_1_0;
	       tim0_0_2 = tim1_0_0 + tim1_1_0;
	       tre0_1_2 = tre1_0_0 - tre1_1_0;
	       tim0_1_2 = tim1_0_0 - tim1_1_0;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[3 * stride]);
		    ti = c_im(inout[3 * stride]);
		    twr = c_re(W[2]);
		    twi = c_im(W[2]);
		    tre1_0_0 = (tr * twr) - (ti * twi);
		    tim1_0_0 = (tr * twi) + (ti * twr);
	       }
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[7 * stride]);
		    ti = c_im(inout[7 * stride]);
		    twr = c_re(W[6]);
		    twi = c_im(W[6]);
		    tre1_1_0 = (tr * twr) - (ti * twi);
		    tim1_1_0 = (tr * twi) + (ti * twr);
	       }
	       tre0_0_3 = tre1_0_0 + tre1_1_0;
	       tim0_0_3 = tim1_0_0 + tim1_1_0;
	       tre0_1_3 = tre1_0_0 - tre1_1_0;
	       tim0_1_3 = tim1_0_0 - tim1_1_0;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       tre1_0_0 = tre0_0_0 + tre0_0_2;
	       tim1_0_0 = tim0_0_0 + tim0_0_2;
	       tre1_1_0 = tre0_0_0 - tre0_0_2;
	       tim1_1_0 = tim0_0_0 - tim0_0_2;
	       tre1_0_1 = tre0_0_1 + tre0_0_3;
	       tim1_0_1 = tim0_0_1 + tim0_0_3;
	       tre1_1_1 = tre0_0_1 - tre0_0_3;
	       tim1_1_1 = tim0_0_1 - tim0_0_3;
	       c_re(inout[0]) = tre1_0_0 + tre1_0_1;
	       c_im(inout[0]) = tim1_0_0 + tim1_0_1;
	       c_re(inout[4 * stride]) = tre1_0_0 - tre1_0_1;
	       c_im(inout[4 * stride]) = tim1_0_0 - tim1_0_1;
	       c_re(inout[2 * stride]) = tre1_1_0 + tim1_1_1;
	       c_im(inout[2 * stride]) = tim1_1_0 - tre1_1_1;
	       c_re(inout[6 * stride]) = tre1_1_0 - tim1_1_1;
	       c_im(inout[6 * stride]) = tim1_1_0 + tre1_1_1;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       tre1_0_0 = tre0_1_0 + tim0_1_2;
	       tim1_0_0 = tim0_1_0 - tre0_1_2;
	       tre1_1_0 = tre0_1_0 - tim0_1_2;
	       tim1_1_0 = tim0_1_0 + tre0_1_2;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_1_1 + tim0_1_1);
		    tim2_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_1_1 - tre0_1_1);
		    tre2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_1_3 - tre0_1_3);
		    tim2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_1_3 + tre0_1_3);
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 - tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 + tim2_1_0;
	       }
	       c_re(inout[stride]) = tre1_0_0 + tre1_0_1;
	       c_im(inout[stride]) = tim1_0_0 + tim1_0_1;
	       c_re(inout[5 * stride]) = tre1_0_0 - tre1_0_1;
	       c_im(inout[5 * stride]) = tim1_0_0 - tim1_0_1;
	       c_re(inout[3 * stride]) = tre1_1_0 + tim1_1_1;
	       c_im(inout[3 * stride]) = tim1_1_0 - tre1_1_1;
	       c_re(inout[7 * stride]) = tre1_1_0 - tim1_1_1;
	       c_im(inout[7 * stride]) = tim1_1_0 + tre1_1_1;
	  }
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 108 FP additions and 72 FP multiplications */

void fftw_twiddle_9(FFTW_COMPLEX *A, const FFTW_COMPLEX *W, int stride, int m, int dist)
{
     int i;
     COMPLEX *inout;
     inout = A;
     for (i = 0; i < m; i = i + 1, inout = inout + dist, W = W + 8) {
	  FFTW_REAL tre0_0_0;
	  FFTW_REAL tim0_0_0;
	  FFTW_REAL tre0_0_1;
	  FFTW_REAL tim0_0_1;
	  FFTW_REAL tre0_0_2;
	  FFTW_REAL tim0_0_2;
	  FFTW_REAL tre0_1_0;
	  FFTW_REAL tim0_1_0;
	  FFTW_REAL tre0_1_1;
	  FFTW_REAL tim0_1_1;
	  FFTW_REAL tre0_1_2;
	  FFTW_REAL tim0_1_2;
	  FFTW_REAL tre0_2_0;
	  FFTW_REAL tim0_2_0;
	  FFTW_REAL tre0_2_1;
	  FFTW_REAL tim0_2_1;
	  FFTW_REAL tre0_2_2;
	  FFTW_REAL tim0_2_2;
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_2_0;
	       FFTW_REAL tim1_2_0;
	       tre1_0_0 = c_re(inout[0]);
	       tim1_0_0 = c_im(inout[0]);
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[3 * stride]);
		    ti = c_im(inout[3 * stride]);
		    twr = c_re(W[2]);
		    twi = c_im(W[2]);
		    tre1_1_0 = (tr * twr) - (ti * twi);
		    tim1_1_0 = (tr * twi) + (ti * twr);
	       }
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[6 * stride]);
		    ti = c_im(inout[6 * stride]);
		    twr = c_re(W[5]);
		    twi = c_im(W[5]);
		    tre1_2_0 = (tr * twr) - (ti * twi);
		    tim1_2_0 = (tr * twi) + (ti * twr);
	       }
	       tre0_0_0 = tre1_0_0 + tre1_1_0 + tre1_2_0;
	       tim0_0_0 = tim1_0_0 + tim1_1_0 + tim1_2_0;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tre2_1_0;
		    tre2_0_0 = tre1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tre1_1_0 + tre1_2_0));
		    tre2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tim1_1_0 - tim1_2_0);
		    tre0_1_0 = tre2_0_0 + tre2_1_0;
		    tre0_2_0 = tre2_0_0 - tre2_1_0;
	       }
	       {
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tim2_1_0;
		    tim2_0_0 = tim1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tim1_1_0 + tim1_2_0));
		    tim2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tre1_2_0 - tre1_1_0);
		    tim0_1_0 = tim2_0_0 + tim2_1_0;
		    tim0_2_0 = tim2_0_0 - tim2_1_0;
	       }
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_2_0;
	       FFTW_REAL tim1_2_0;
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[stride]);
		    ti = c_im(inout[stride]);
		    twr = c_re(W[0]);
		    twi = c_im(W[0]);
		    tre1_0_0 = (tr * twr) - (ti * twi);
		    tim1_0_0 = (tr * twi) + (ti * twr);
	       }
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[4 * stride]);
		    ti = c_im(inout[4 * stride]);
		    twr = c_re(W[3]);
		    twi = c_im(W[3]);
		    tre1_1_0 = (tr * twr) - (ti * twi);
		    tim1_1_0 = (tr * twi) + (ti * twr);
	       }
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[7 * stride]);
		    ti = c_im(inout[7 * stride]);
		    twr = c_re(W[6]);
		    twi = c_im(W[6]);
		    tre1_2_0 = (tr * twr) - (ti * twi);
		    tim1_2_0 = (tr * twi) + (ti * twr);
	       }
	       tre0_0_1 = tre1_0_0 + tre1_1_0 + tre1_2_0;
	       tim0_0_1 = tim1_0_0 + tim1_1_0 + tim1_2_0;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tre2_1_0;
		    tre2_0_0 = tre1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tre1_1_0 + tre1_2_0));
		    tre2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tim1_1_0 - tim1_2_0);
		    tre0_1_1 = tre2_0_0 + tre2_1_0;
		    tre0_2_1 = tre2_0_0 - tre2_1_0;
	       }
	       {
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tim2_1_0;
		    tim2_0_0 = tim1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tim1_1_0 + tim1_2_0));
		    tim2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tre1_2_0 - tre1_1_0);
		    tim0_1_1 = tim2_0_0 + tim2_1_0;
		    tim0_2_1 = tim2_0_0 - tim2_1_0;
	       }
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_2_0;
	       FFTW_REAL tim1_2_0;
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[2 * stride]);
		    ti = c_im(inout[2 * stride]);
		    twr = c_re(W[1]);
		    twi = c_im(W[1]);
		    tre1_0_0 = (tr * twr) - (ti * twi);
		    tim1_0_0 = (tr * twi) + (ti * twr);
	       }
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[5 * stride]);
		    ti = c_im(inout[5 * stride]);
		    twr = c_re(W[4]);
		    twi = c_im(W[4]);
		    tre1_1_0 = (tr * twr) - (ti * twi);
		    tim1_1_0 = (tr * twi) + (ti * twr);
	       }
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[8 * stride]);
		    ti = c_im(inout[8 * stride]);
		    twr = c_re(W[7]);
		    twi = c_im(W[7]);
		    tre1_2_0 = (tr * twr) - (ti * twi);
		    tim1_2_0 = (tr * twi) + (ti * twr);
	       }
	       tre0_0_2 = tre1_0_0 + tre1_1_0 + tre1_2_0;
	       tim0_0_2 = tim1_0_0 + tim1_1_0 + tim1_2_0;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tre2_1_0;
		    tre2_0_0 = tre1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tre1_1_0 + tre1_2_0));
		    tre2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tim1_1_0 - tim1_2_0);
		    tre0_1_2 = tre2_0_0 + tre2_1_0;
		    tre0_2_2 = tre2_0_0 - tre2_1_0;
	       }
	       {
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tim2_1_0;
		    tim2_0_0 = tim1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tim1_1_0 + tim1_2_0));
		    tim2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tre1_2_0 - tre1_1_0);
		    tim0_1_2 = tim2_0_0 + tim2_1_0;
		    tim0_2_2 = tim2_0_0 - tim2_1_0;
	       }
	  }
	  c_re(inout[0]) = tre0_0_0 + tre0_0_1 + tre0_0_2;
	  c_im(inout[0]) = tim0_0_0 + tim0_0_1 + tim0_0_2;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tre2_1_0;
	       tre2_0_0 = tre0_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tre0_0_1 + tre0_0_2));
	       tre2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tim0_0_1 - tim0_0_2);
	       c_re(inout[3 * stride]) = tre2_0_0 + tre2_1_0;
	       c_re(inout[6 * stride]) = tre2_0_0 - tre2_1_0;
	  }
	  {
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tim2_1_0;
	       tim2_0_0 = tim0_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tim0_0_1 + tim0_0_2));
	       tim2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tre0_0_2 - tre0_0_1);
	       c_im(inout[3 * stride]) = tim2_0_0 + tim2_1_0;
	       c_im(inout[6 * stride]) = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_2_0;
	       FFTW_REAL tim1_2_0;
	       tre1_1_0 = (((FFTW_REAL) FFTW_K766044443) * tre0_1_1) + (((FFTW_REAL) FFTW_K642787609) * tim0_1_1);
	       tim1_1_0 = (((FFTW_REAL) FFTW_K766044443) * tim0_1_1) - (((FFTW_REAL) FFTW_K642787609) * tre0_1_1);
	       tre1_2_0 = (((FFTW_REAL) FFTW_K173648177) * tre0_1_2) + (((FFTW_REAL) FFTW_K984807753) * tim0_1_2);
	       tim1_2_0 = (((FFTW_REAL) FFTW_K173648177) * tim0_1_2) - (((FFTW_REAL) FFTW_K984807753) * tre0_1_2);
	       c_re(inout[stride]) = tre0_1_0 + tre1_1_0 + tre1_2_0;
	       c_im(inout[stride]) = tim0_1_0 + tim1_1_0 + tim1_2_0;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tre2_1_0;
		    tre2_0_0 = tre0_1_0 - (((FFTW_REAL) FFTW_K499999999) * (tre1_1_0 + tre1_2_0));
		    tre2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tim1_1_0 - tim1_2_0);
		    c_re(inout[4 * stride]) = tre2_0_0 + tre2_1_0;
		    c_re(inout[7 * stride]) = tre2_0_0 - tre2_1_0;
	       }
	       {
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tim2_1_0;
		    tim2_0_0 = tim0_1_0 - (((FFTW_REAL) FFTW_K499999999) * (tim1_1_0 + tim1_2_0));
		    tim2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tre1_2_0 - tre1_1_0);
		    c_im(inout[4 * stride]) = tim2_0_0 + tim2_1_0;
		    c_im(inout[7 * stride]) = tim2_0_0 - tim2_1_0;
	       }
	  }
	  {
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_2_0;
	       FFTW_REAL tim1_2_0;
	       tre1_1_0 = (((FFTW_REAL) FFTW_K173648177) * tre0_2_1) + (((FFTW_REAL) FFTW_K984807753) * tim0_2_1);
	       tim1_1_0 = (((FFTW_REAL) FFTW_K173648177) * tim0_2_1) - (((FFTW_REAL) FFTW_K984807753) * tre0_2_1);
	       tre1_2_0 = (((FFTW_REAL) FFTW_K342020143) * tim0_2_2) - (((FFTW_REAL) FFTW_K939692620) * tre0_2_2);
	       tim1_2_0 = (((FFTW_REAL) FFTW_K939692620) * tim0_2_2) + (((FFTW_REAL) FFTW_K342020143) * tre0_2_2);
	       c_re(inout[2 * stride]) = tre0_2_0 + tre1_1_0 + tre1_2_0;
	       c_im(inout[2 * stride]) = tim0_2_0 + tim1_1_0 - tim1_2_0;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tre2_1_0;
		    tre2_0_0 = tre0_2_0 - (((FFTW_REAL) FFTW_K499999999) * (tre1_1_0 + tre1_2_0));
		    tre2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tim1_1_0 + tim1_2_0);
		    c_re(inout[5 * stride]) = tre2_0_0 + tre2_1_0;
		    c_re(inout[8 * stride]) = tre2_0_0 - tre2_1_0;
	       }
	       {
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tim2_1_0;
		    tim2_0_0 = tim0_2_0 + (((FFTW_REAL) FFTW_K499999999) * (tim1_2_0 - tim1_1_0));
		    tim2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tre1_2_0 - tre1_1_0);
		    c_im(inout[5 * stride]) = tim2_0_0 + tim2_1_0;
		    c_im(inout[8 * stride]) = tim2_0_0 - tim2_1_0;
	       }
	  }
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 126 FP additions and 68 FP multiplications */

void fftwi_twiddle_10(FFTW_COMPLEX *A, const FFTW_COMPLEX *W, int stride, int m, int dist)
{
     int i;
     COMPLEX *inout;
     inout = A;
     for (i = 0; i < m; i = i + 1, inout = inout + dist, W = W + 9) {
	  FFTW_REAL tre0_0_0;
	  FFTW_REAL tim0_0_0;
	  FFTW_REAL tre0_0_1;
	  FFTW_REAL tim0_0_1;
	  FFTW_REAL tre0_0_2;
	  FFTW_REAL tim0_0_2;
	  FFTW_REAL tre0_0_3;
	  FFTW_REAL tim0_0_3;
	  FFTW_REAL tre0_0_4;
	  FFTW_REAL tim0_0_4;
	  FFTW_REAL tre0_1_0;
	  FFTW_REAL tim0_1_0;
	  FFTW_REAL tre0_1_1;
	  FFTW_REAL tim0_1_1;
	  FFTW_REAL tre0_1_2;
	  FFTW_REAL tim0_1_2;
	  FFTW_REAL tre0_1_3;
	  FFTW_REAL tim0_1_3;
	  FFTW_REAL tre0_1_4;
	  FFTW_REAL tim0_1_4;
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       tre1_0_0 = c_re(inout[0]);
	       tim1_0_0 = c_im(inout[0]);
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[5 * stride]);
		    ti = c_im(inout[5 * stride]);
		    twr = c_re(W[4]);
		    twi = c_im(W[4]);
		    tre1_1_0 = (tr * twr) + (ti * twi);
		    tim1_1_0 = (ti * twr) - (tr * twi);
	       }
	       tre0_0_0 = tre1_0_0 + tre1_1_0;
	       tim0_0_0 = tim1_0_0 + tim1_1_0;
	       tre0_1_0 = tre1_0_0 - tre1_1_0;
	       tim0_1_0 = tim1_0_0 - tim1_1_0;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[2 * stride]);
		    ti = c_im(inout[2 * stride]);
		    twr = c_re(W[1]);
		    twi = c_im(W[1]);
		    tre1_0_0 = (tr * twr) + (ti * twi);
		    tim1_0_0 = (ti * twr) - (tr * twi);
	       }
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[7 * stride]);
		    ti = c_im(inout[7 * stride]);
		    twr = c_re(W[6]);
		    twi = c_im(W[6]);
		    tre1_1_0 = (tr * twr) + (ti * twi);
		    tim1_1_0 = (ti * twr) - (tr * twi);
	       }
	       tre0_0_1 = tre1_0_0 + tre1_1_0;
	       tim0_0_1 = tim1_0_0 + tim1_1_0;
	       tre0_1_1 = tre1_0_0 - tre1_1_0;
	       tim0_1_1 = tim1_0_0 - tim1_1_0;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[4 * stride]);
		    ti = c_im(inout[4 * stride]);
		    twr = c_re(W[3]);
		    twi = c_im(W[3]);
		    tre1_0_0 = (tr * twr) + (ti * twi);
		    tim1_0_0 = (ti * twr) - (tr * twi);
	       }
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[9 * stride]);
		    ti = c_im(inout[9 * stride]);
		    twr = c_re(W[8]);
		    twi = c_im(W[8]);
		    tre1_1_0 = (tr * twr) + (ti * twi);
		    tim1_1_0 = (ti * twr) - (tr * twi);
	       }
	       tre0_0_2 = tre1_0_0 + tre1_1_0;
	       tim0_0_2 = tim1_0_0 + tim1_1_0;
	       tre0_1_2 = tre1_0_0 - tre1_1_0;
	       tim0_1_2 = tim1_0_0 - tim1_1_0;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[6 * stride]);
		    ti = c_im(inout[6 * stride]);
		    twr = c_re(W[5]);
		    twi = c_im(W[5]);
		    tre1_0_0 = (tr * twr) + (ti * twi);
		    tim1_0_0 = (ti * twr) - (tr * twi);
	       }
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[stride]);
		    ti = c_im(inout[stride]);
		    twr = c_re(W[0]);
		    twi = c_im(W[0]);
		    tre1_1_0 = (tr * twr) + (ti * twi);
		    tim1_1_0 = (ti * twr) - (tr * twi);
	       }
	       tre0_0_3 = tre1_0_0 + tre1_1_0;
	       tim0_0_3 = tim1_0_0 + tim1_1_0;
	       tre0_1_3 = tre1_0_0 - tre1_1_0;
	       tim0_1_3 = tim1_0_0 - tim1_1_0;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[8 * stride]);
		    ti = c_im(inout[8 * stride]);
		    twr = c_re(W[7]);
		    twi = c_im(W[7]);
		    tre1_0_0 = (tr * twr) + (ti * twi);
		    tim1_0_0 = (ti * twr) - (tr * twi);
	       }
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[3 * stride]);
		    ti = c_im(inout[3 * stride]);
		    twr = c_re(W[2]);
		    twi = c_im(W[2]);
		    tre1_1_0 = (tr * twr) + (ti * twi);
		    tim1_1_0 = (ti * twr) - (tr * twi);
	       }
	       tre0_0_4 = tre1_0_0 + tre1_1_0;
	       tim0_0_4 = tim1_0_0 + tim1_1_0;
	       tre0_1_4 = tre1_0_0 - tre1_1_0;
	       tim0_1_4 = tim1_0_0 - tim1_1_0;
	  }
	  c_re(inout[0]) = tre0_0_0 + tre0_0_1 + tre0_0_2 + tre0_0_3 + tre0_0_4;
	  c_im(inout[0]) = tim0_0_0 + tim0_0_1 + tim0_0_2 + tim0_0_3 + tim0_0_4;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tre2_1_0;
	       tre2_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K309016994) * (tre0_0_1 + tre0_0_4)) - (((FFTW_REAL) FFTW_K809016994) * (tre0_0_2 + tre0_0_3));
	       tre2_1_0 = (((FFTW_REAL) FFTW_K951056516) * (tim0_0_4 - tim0_0_1)) + (((FFTW_REAL) FFTW_K587785252) * (tim0_0_3 - tim0_0_2));
	       c_re(inout[6 * stride]) = tre2_0_0 + tre2_1_0;
	       c_re(inout[4 * stride]) = tre2_0_0 - tre2_1_0;
	  }
	  {
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tim2_1_0;
	       tim2_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K309016994) * (tim0_0_1 + tim0_0_4)) - (((FFTW_REAL) FFTW_K809016994) * (tim0_0_2 + tim0_0_3));
	       tim2_1_0 = (((FFTW_REAL) FFTW_K951056516) * (tre0_0_1 - tre0_0_4)) + (((FFTW_REAL) FFTW_K587785252) * (tre0_0_2 - tre0_0_3));
	       c_im(inout[6 * stride]) = tim2_0_0 + tim2_1_0;
	       c_im(inout[4 * stride]) = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tre2_1_0;
	       tre2_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K309016994) * (tre0_0_2 + tre0_0_3)) - (((FFTW_REAL) FFTW_K809016994) * (tre0_0_1 + tre0_0_4));
	       tre2_1_0 = (((FFTW_REAL) FFTW_K587785252) * (tim0_0_4 - tim0_0_1)) + (((FFTW_REAL) FFTW_K951056516) * (tim0_0_2 - tim0_0_3));
	       c_re(inout[2 * stride]) = tre2_0_0 + tre2_1_0;
	       c_re(inout[8 * stride]) = tre2_0_0 - tre2_1_0;
	  }
	  {
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tim2_1_0;
	       tim2_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K309016994) * (tim0_0_2 + tim0_0_3)) - (((FFTW_REAL) FFTW_K809016994) * (tim0_0_1 + tim0_0_4));
	       tim2_1_0 = (((FFTW_REAL) FFTW_K587785252) * (tre0_0_1 - tre0_0_4)) + (((FFTW_REAL) FFTW_K951056516) * (tre0_0_3 - tre0_0_2));
	       c_im(inout[2 * stride]) = tim2_0_0 + tim2_1_0;
	       c_im(inout[8 * stride]) = tim2_0_0 - tim2_1_0;
	  }
	  c_re(inout[5 * stride]) = tre0_1_0 + tre0_1_1 + tre0_1_2 + tre0_1_3 + tre0_1_4;
	  c_im(inout[5 * stride]) = tim0_1_0 + tim0_1_1 + tim0_1_2 + tim0_1_3 + tim0_1_4;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tre2_1_0;
	       tre2_0_0 = tre0_1_0 + (((FFTW_REAL) FFTW_K309016994) * (tre0_1_1 + tre0_1_4)) - (((FFTW_REAL) FFTW_K809016994) * (tre0_1_2 + tre0_1_3));
	       tre2_1_0 = (((FFTW_REAL) FFTW_K951056516) * (tim0_1_4 - tim0_1_1)) + (((FFTW_REAL) FFTW_K587785252) * (tim0_1_3 - tim0_1_2));
	       c_re(inout[stride]) = tre2_0_0 + tre2_1_0;
	       c_re(inout[9 * stride]) = tre2_0_0 - tre2_1_0;
	  }
	  {
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tim2_1_0;
	       tim2_0_0 = tim0_1_0 + (((FFTW_REAL) FFTW_K309016994) * (tim0_1_1 + tim0_1_4)) - (((FFTW_REAL) FFTW_K809016994) * (tim0_1_2 + tim0_1_3));
	       tim2_1_0 = (((FFTW_REAL) FFTW_K951056516) * (tre0_1_1 - tre0_1_4)) + (((FFTW_REAL) FFTW_K587785252) * (tre0_1_2 - tre0_1_3));
	       c_im(inout[stride]) = tim2_0_0 + tim2_1_0;
	       c_im(inout[9 * stride]) = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tre2_1_0;
	       tre2_0_0 = tre0_1_0 + (((FFTW_REAL) FFTW_K309016994) * (tre0_1_2 + tre0_1_3)) - (((FFTW_REAL) FFTW_K809016994) * (tre0_1_1 + tre0_1_4));
	       tre2_1_0 = (((FFTW_REAL) FFTW_K587785252) * (tim0_1_4 - tim0_1_1)) + (((FFTW_REAL) FFTW_K951056516) * (tim0_1_2 - tim0_1_3));
	       c_re(inout[7 * stride]) = tre2_0_0 + tre2_1_0;
	       c_re(inout[3 * stride]) = tre2_0_0 - tre2_1_0;
	  }
	  {
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tim2_1_0;
	       tim2_0_0 = tim0_1_0 + (((FFTW_REAL) FFTW_K309016994) * (tim0_1_2 + tim0_1_3)) - (((FFTW_REAL) FFTW_K809016994) * (tim0_1_1 + tim0_1_4));
	       tim2_1_0 = (((FFTW_REAL) FFTW_K587785252) * (tre0_1_1 - tre0_1_4)) + (((FFTW_REAL) FFTW_K951056516) * (tre0_1_3 - tre0_1_2));
	       c_im(inout[7 * stride]) = tim2_0_0 + tim2_1_0;
	       c_im(inout[3 * stride]) = tim2_0_0 - tim2_1_0;
	  }
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 174 FP additions and 84 FP multiplications */

void fftwi_twiddle_16(FFTW_COMPLEX *A, const FFTW_COMPLEX *W, int stride, int m, int dist)
{
     int i;
     COMPLEX *inout;
     inout = A;
     for (i = 0; i < m; i = i + 1, inout = inout + dist, W = W + 15) {
	  FFTW_REAL tre0_0_0;
	  FFTW_REAL tim0_0_0;
	  FFTW_REAL tre0_0_1;
	  FFTW_REAL tim0_0_1;
	  FFTW_REAL tre0_0_2;
	  FFTW_REAL tim0_0_2;
	  FFTW_REAL tre0_0_3;
	  FFTW_REAL tim0_0_3;
	  FFTW_REAL tre0_1_0;
	  FFTW_REAL tim0_1_0;
	  FFTW_REAL tre0_1_1;
	  FFTW_REAL tim0_1_1;
	  FFTW_REAL tre0_1_2;
	  FFTW_REAL tim0_1_2;
	  FFTW_REAL tre0_1_3;
	  FFTW_REAL tim0_1_3;
	  FFTW_REAL tre0_2_0;
	  FFTW_REAL tim0_2_0;
	  FFTW_REAL tre0_2_1;
	  FFTW_REAL tim0_2_1;
	  FFTW_REAL tre0_2_2;
	  FFTW_REAL tim0_2_2;
	  FFTW_REAL tre0_2_3;
	  FFTW_REAL tim0_2_3;
	  FFTW_REAL tre0_3_0;
	  FFTW_REAL tim0_3_0;
	  FFTW_REAL tre0_3_1;
	  FFTW_REAL tim0_3_1;
	  FFTW_REAL tre0_3_2;
	  FFTW_REAL tim0_3_2;
	  FFTW_REAL tre0_3_3;
	  FFTW_REAL tim0_3_3;
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = c_re(inout[0]);
		    tim2_0_0 = c_im(inout[0]);
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[8 * stride]);
			 ti = c_im(inout[8 * stride]);
			 twr = c_re(W[7]);
			 twi = c_im(W[7]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_0 = tre2_0_0 + tre2_1_0;
		    tim1_0_0 = tim2_0_0 + tim2_1_0;
		    tre1_1_0 = tre2_0_0 - tre2_1_0;
		    tim1_1_0 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[4 * stride]);
			 ti = c_im(inout[4 * stride]);
			 twr = c_re(W[3]);
			 twi = c_im(W[3]);
			 tre2_0_0 = (tr * twr) + (ti * twi);
			 tim2_0_0 = (ti * twr) - (tr * twi);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[12 * stride]);
			 ti = c_im(inout[12 * stride]);
			 twr = c_re(W[11]);
			 twi = c_im(W[11]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       tre0_0_0 = tre1_0_0 + tre1_0_1;
	       tim0_0_0 = tim1_0_0 + tim1_0_1;
	       tre0_2_0 = tre1_0_0 - tre1_0_1;
	       tim0_2_0 = tim1_0_0 - tim1_0_1;
	       tre0_1_0 = tre1_1_0 - tim1_1_1;
	       tim0_1_0 = tim1_1_0 + tre1_1_1;
	       tre0_3_0 = tre1_1_0 + tim1_1_1;
	       tim0_3_0 = tim1_1_0 - tre1_1_1;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[stride]);
			 ti = c_im(inout[stride]);
			 twr = c_re(W[0]);
			 twi = c_im(W[0]);
			 tre2_0_0 = (tr * twr) + (ti * twi);
			 tim2_0_0 = (ti * twr) - (tr * twi);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[9 * stride]);
			 ti = c_im(inout[9 * stride]);
			 twr = c_re(W[8]);
			 twi = c_im(W[8]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_0 = tre2_0_0 + tre2_1_0;
		    tim1_0_0 = tim2_0_0 + tim2_1_0;
		    tre1_1_0 = tre2_0_0 - tre2_1_0;
		    tim1_1_0 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[5 * stride]);
			 ti = c_im(inout[5 * stride]);
			 twr = c_re(W[4]);
			 twi = c_im(W[4]);
			 tre2_0_0 = (tr * twr) + (ti * twi);
			 tim2_0_0 = (ti * twr) - (tr * twi);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[13 * stride]);
			 ti = c_im(inout[13 * stride]);
			 twr = c_re(W[12]);
			 twi = c_im(W[12]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       tre0_0_1 = tre1_0_0 + tre1_0_1;
	       tim0_0_1 = tim1_0_0 + tim1_0_1;
	       tre0_2_1 = tre1_0_0 - tre1_0_1;
	       tim0_2_1 = tim1_0_0 - tim1_0_1;
	       tre0_1_1 = tre1_1_0 - tim1_1_1;
	       tim0_1_1 = tim1_1_0 + tre1_1_1;
	       tre0_3_1 = tre1_1_0 + tim1_1_1;
	       tim0_3_1 = tim1_1_0 - tre1_1_1;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[2 * stride]);
			 ti = c_im(inout[2 * stride]);
			 twr = c_re(W[1]);
			 twi = c_im(W[1]);
			 tre2_0_0 = (tr * twr) + (ti * twi);
			 tim2_0_0 = (ti * twr) - (tr * twi);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[10 * stride]);
			 ti = c_im(inout[10 * stride]);
			 twr = c_re(W[9]);
			 twi = c_im(W[9]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_0 = tre2_0_0 + tre2_1_0;
		    tim1_0_0 = tim2_0_0 + tim2_1_0;
		    tre1_1_0 = tre2_0_0 - tre2_1_0;
		    tim1_1_0 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[6 * stride]);
			 ti = c_im(inout[6 * stride]);
			 twr = c_re(W[5]);
			 twi = c_im(W[5]);
			 tre2_0_0 = (tr * twr) + (ti * twi);
			 tim2_0_0 = (ti * twr) - (tr * twi);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[14 * stride]);
			 ti = c_im(inout[14 * stride]);
			 twr = c_re(W[13]);
			 twi = c_im(W[13]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       tre0_0_2 = tre1_0_0 + tre1_0_1;
	       tim0_0_2 = tim1_0_0 + tim1_0_1;
	       tre0_2_2 = tre1_0_0 - tre1_0_1;
	       tim0_2_2 = tim1_0_0 - tim1_0_1;
	       tre0_1_2 = tre1_1_0 - tim1_1_1;
	       tim0_1_2 = tim1_1_0 + tre1_1_1;
	       tre0_3_2 = tre1_1_0 + tim1_1_1;
	       tim0_3_2 = tim1_1_0 - tre1_1_1;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[3 * stride]);
			 ti = c_im(inout[3 * stride]);
			 twr = c_re(W[2]);
			 twi = c_im(W[2]);
			 tre2_0_0 = (tr * twr) + (ti * twi);
			 tim2_0_0 = (ti * twr) - (tr * twi);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[11 * stride]);
			 ti = c_im(inout[11 * stride]);
			 twr = c_re(W[10]);
			 twi = c_im(W[10]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_0 = tre2_0_0 + tre2_1_0;
		    tim1_0_0 = tim2_0_0 + tim2_1_0;
		    tre1_1_0 = tre2_0_0 - tre2_1_0;
		    tim1_1_0 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[7 * stride]);
			 ti = c_im(inout[7 * stride]);
			 twr = c_re(W[6]);
			 twi = c_im(W[6]);
			 tre2_0_0 = (tr * twr) + (ti * twi);
			 tim2_0_0 = (ti * twr) - (tr * twi);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[15 * stride]);
			 ti = c_im(inout[15 * stride]);
			 twr = c_re(W[14]);
			 twi = c_im(W[14]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       tre0_0_3 = tre1_0_0 + tre1_0_1;
	       tim0_0_3 = tim1_0_0 + tim1_0_1;
	       tre0_2_3 = tre1_0_0 - tre1_0_1;
	       tim0_2_3 = tim1_0_0 - tim1_0_1;
	       tre0_1_3 = tre1_1_0 - tim1_1_1;
	       tim0_1_3 = tim1_1_0 + tre1_1_1;
	       tre0_3_3 = tre1_1_0 + tim1_1_1;
	       tim0_3_3 = tim1_1_0 - tre1_1_1;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       tre1_0_0 = tre0_0_0 + tre0_0_2;
	       tim1_0_0 = tim0_0_0 + tim0_0_2;
	       tre1_1_0 = tre0_0_0 - tre0_0_2;
	       tim1_1_0 = tim0_0_0 - tim0_0_2;
	       tre1_0_1 = tre0_0_1 + tre0_0_3;
	       tim1_0_1 = tim0_0_1 + tim0_0_3;
	       tre1_1_1 = tre0_0_1 - tre0_0_3;
	       tim1_1_1 = tim0_0_1 - tim0_0_3;
	       c_re(inout[0]) = tre1_0_0 + tre1_0_1;
	       c_im(inout[0]) = tim1_0_0 + tim1_0_1;
	       c_re(inout[8 * stride]) = tre1_0_0 - tre1_0_1;
	       c_im(inout[8 * stride]) = tim1_0_0 - tim1_0_1;
	       c_re(inout[4 * stride]) = tre1_1_0 - tim1_1_1;
	       c_im(inout[4 * stride]) = tim1_1_0 + tre1_1_1;
	       c_re(inout[12 * stride]) = tre1_1_0 + tim1_1_1;
	       c_im(inout[12 * stride]) = tim1_1_0 - tre1_1_1;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       {
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_1_2 - tim0_1_2);
		    tim2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_1_2 + tre0_1_2);
		    tre1_0_0 = tre0_1_0 + tre2_1_0;
		    tim1_0_0 = tim0_1_0 + tim2_1_0;
		    tre1_1_0 = tre0_1_0 - tre2_1_0;
		    tim1_1_0 = tim0_1_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K923879532) * tre0_1_1) - (((FFTW_REAL) FFTW_K382683432) * tim0_1_1);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K923879532) * tim0_1_1) + (((FFTW_REAL) FFTW_K382683432) * tre0_1_1);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tre0_1_3) - (((FFTW_REAL) FFTW_K923879532) * tim0_1_3);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tim0_1_3) + (((FFTW_REAL) FFTW_K923879532) * tre0_1_3);
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       c_re(inout[stride]) = tre1_0_0 + tre1_0_1;
	       c_im(inout[stride]) = tim1_0_0 + tim1_0_1;
	       c_re(inout[9 * stride]) = tre1_0_0 - tre1_0_1;
	       c_im(inout[9 * stride]) = tim1_0_0 - tim1_0_1;
	       c_re(inout[5 * stride]) = tre1_1_0 - tim1_1_1;
	       c_im(inout[5 * stride]) = tim1_1_0 + tre1_1_1;
	       c_re(inout[13 * stride]) = tre1_1_0 + tim1_1_1;
	       c_im(inout[13 * stride]) = tim1_1_0 - tre1_1_1;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       tre1_0_0 = tre0_2_0 - tim0_2_2;
	       tim1_0_0 = tim0_2_0 + tre0_2_2;
	       tre1_1_0 = tre0_2_0 + tim0_2_2;
	       tim1_1_0 = tim0_2_0 - tre0_2_2;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_2_1 - tim0_2_1);
		    tim2_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_2_1 + tre0_2_1);
		    tre2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_2_3 + tim0_2_3);
		    tim2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_2_3 - tim0_2_3);
		    tre1_0_1 = tre2_0_0 - tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 + tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       c_re(inout[2 * stride]) = tre1_0_0 + tre1_0_1;
	       c_im(inout[2 * stride]) = tim1_0_0 + tim1_0_1;
	       c_re(inout[10 * stride]) = tre1_0_0 - tre1_0_1;
	       c_im(inout[10 * stride]) = tim1_0_0 - tim1_0_1;
	       c_re(inout[6 * stride]) = tre1_1_0 - tim1_1_1;
	       c_im(inout[6 * stride]) = tim1_1_0 + tre1_1_1;
	       c_re(inout[14 * stride]) = tre1_1_0 + tim1_1_1;
	       c_im(inout[14 * stride]) = tim1_1_0 - tre1_1_1;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       {
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_3_2 + tim0_3_2);
		    tim2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_3_2 - tim0_3_2);
		    tre1_0_0 = tre0_3_0 - tre2_1_0;
		    tim1_0_0 = tim0_3_0 + tim2_1_0;
		    tre1_1_0 = tre0_3_0 + tre2_1_0;
		    tim1_1_0 = tim0_3_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K382683432) * tre0_3_1) - (((FFTW_REAL) FFTW_K923879532) * tim0_3_1);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K382683432) * tim0_3_1) + (((FFTW_REAL) FFTW_K923879532) * tre0_3_1);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tim0_3_3) - (((FFTW_REAL) FFTW_K923879532) * tre0_3_3);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K923879532) * tim0_3_3) + (((FFTW_REAL) FFTW_K382683432) * tre0_3_3);
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 - tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 + tim2_1_0;
	       }
	       c_re(inout[3 * stride]) = tre1_0_0 + tre1_0_1;
	       c_im(inout[3 * stride]) = tim1_0_0 + tim1_0_1;
	       c_re(inout[11 * stride]) = tre1_0_0 - tre1_0_1;
	       c_im(inout[11 * stride]) = tim1_0_0 - tim1_0_1;
	       c_re(inout[7 * stride]) = tre1_1_0 - tim1_1_1;
	       c_im(inout[7 * stride]) = tim1_1_0 + tre1_1_1;
	       c_re(inout[15 * stride]) = tre1_1_0 + tim1_1_1;
	       c_im(inout[15 * stride]) = tim1_1_0 - tre1_1_1;
	  }
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 6 FP additions and 4 FP multiplications */

void fftwi_twiddle_2(FFTW_COMPLEX *A, const FFTW_COMPLEX *W, int stride, int m, int dist)
{
     int i;
     COMPLEX *inout;
     inout = A;
     for (i = 0; i < m; i = i + 1, inout = inout + dist, W = W + 1) {
	  FFTW_REAL tre0_0_0;
	  FFTW_REAL tim0_0_0;
	  FFTW_REAL tre0_1_0;
	  FFTW_REAL tim0_1_0;
	  tre0_0_0 = c_re(inout[0]);
	  tim0_0_0 = c_im(inout[0]);
	  {
	       FFTW_REAL tr;
	       FFTW_REAL ti;
	       FFTW_REAL twr;
	       FFTW_REAL twi;
	       tr = c_re(inout[stride]);
	       ti = c_im(inout[stride]);
	       twr = c_re(W[0]);
	       twi = c_im(W[0]);
	       tre0_1_0 = (tr * twr) + (ti * twi);
	       tim0_1_0 = (ti * twr) - (tr * twi);
	  }
	  c_re(inout[0]) = tre0_0_0 + tre0_1_0;
	  c_im(inout[0]) = tim0_0_0 + tim0_1_0;
	  c_re(inout[stride]) = tre0_0_0 - tre0_1_0;
	  c_im(inout[stride]) = tim0_0_0 - tim0_1_0;
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 18 FP additions and 12 FP multiplications */

void fftwi_twiddle_3(FFTW_COMPLEX *A, const FFTW_COMPLEX *W, int stride, int m, int dist)
{
     int i;
     COMPLEX *inout;
     inout = A;
     for (i = 0; i < m; i = i + 1, inout = inout + dist, W = W + 2) {
	  FFTW_REAL tre0_0_0;
	  FFTW_REAL tim0_0_0;
	  FFTW_REAL tre0_1_0;
	  FFTW_REAL tim0_1_0;
	  FFTW_REAL tre0_2_0;
	  FFTW_REAL tim0_2_0;
	  tre0_0_0 = c_re(inout[0]);
	  tim0_0_0 = c_im(inout[0]);
	  {
	       FFTW_REAL tr;
	       FFTW_REAL ti;
	       FFTW_REAL twr;
	       FFTW_REAL twi;
	       tr = c_re(inout[stride]);
	       ti = c_im(inout[stride]);
	       twr = c_re(W[0]);
	       twi = c_im(W[0]);
	       tre0_1_0 = (tr * twr) + (ti * twi);
	       tim0_1_0 = (ti * twr) - (tr * twi);
	  }
	  {
	       FFTW_REAL tr;
	       FFTW_REAL ti;
	       FFTW_REAL twr;
	       FFTW_REAL twi;
	       tr = c_re(inout[2 * stride]);
	       ti = c_im(inout[2 * stride]);
	       twr = c_re(W[1]);
	       twi = c_im(W[1]);
	       tre0_2_0 = (tr * twr) + (ti * twi);
	       tim0_2_0 = (ti * twr) - (tr * twi);
	  }
	  c_re(inout[0]) = tre0_0_0 + tre0_1_0 + tre0_2_0;
	  c_im(inout[0]) = tim0_0_0 + tim0_1_0 + tim0_2_0;
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tre1_1_0;
	       tre1_0_0 = tre0_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tre0_1_0 + tre0_2_0));
	       tre1_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tim0_2_0 - tim0_1_0);
	       c_re(inout[stride]) = tre1_0_0 + tre1_1_0;
	       c_re(inout[2 * stride]) = tre1_0_0 - tre1_1_0;
	  }
	  {
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tim1_1_0;
	       tim1_0_0 = tim0_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tim0_1_0 + tim0_2_0));
	       tim1_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tre0_1_0 - tre0_2_0);
	       c_im(inout[stride]) = tim1_0_0 + tim1_1_0;
	       c_im(inout[2 * stride]) = tim1_0_0 - tim1_1_0;
	  }
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 438 FP additions and 212 FP multiplications */

void fftwi_twiddle_32(FFTW_COMPLEX *A, const FFTW_COMPLEX *W, int stride, int m, int dist)
{
     int i;
     COMPLEX *inout;
     inout = A;
     for (i = 0; i < m; i = i + 1, inout = inout + dist, W = W + 31) {
	  FFTW_REAL tre0_0_0;
	  FFTW_REAL tim0_0_0;
	  FFTW_REAL tre0_0_1;
	  FFTW_REAL tim0_0_1;
	  FFTW_REAL tre0_0_2;
	  FFTW_REAL tim0_0_2;
	  FFTW_REAL tre0_0_3;
	  FFTW_REAL tim0_0_3;
	  FFTW_REAL tre0_0_4;
	  FFTW_REAL tim0_0_4;
	  FFTW_REAL tre0_0_5;
	  FFTW_REAL tim0_0_5;
	  FFTW_REAL tre0_0_6;
	  FFTW_REAL tim0_0_6;
	  FFTW_REAL tre0_0_7;
	  FFTW_REAL tim0_0_7;
	  FFTW_REAL tre0_1_0;
	  FFTW_REAL tim0_1_0;
	  FFTW_REAL tre0_1_1;
	  FFTW_REAL tim0_1_1;
	  FFTW_REAL tre0_1_2;
	  FFTW_REAL tim0_1_2;
	  FFTW_REAL tre0_1_3;
	  FFTW_REAL tim0_1_3;
	  FFTW_REAL tre0_1_4;
	  FFTW_REAL tim0_1_4;
	  FFTW_REAL tre0_1_5;
	  FFTW_REAL tim0_1_5;
	  FFTW_REAL tre0_1_6;
	  FFTW_REAL tim0_1_6;
	  FFTW_REAL tre0_1_7;
	  FFTW_REAL tim0_1_7;
	  FFTW_REAL tre0_2_0;
	  FFTW_REAL tim0_2_0;
	  FFTW_REAL tre0_2_1;
	  FFTW_REAL tim0_2_1;
	  FFTW_REAL tre0_2_2;
	  FFTW_REAL tim0_2_2;
	  FFTW_REAL tre0_2_3;
	  FFTW_REAL tim0_2_3;
	  FFTW_REAL tre0_2_4;
	  FFTW_REAL tim0_2_4;
	  FFTW_REAL tre0_2_5;
	  FFTW_REAL tim0_2_5;
	  FFTW_REAL tre0_2_6;
	  FFTW_REAL tim0_2_6;
	  FFTW_REAL tre0_2_7;
	  FFTW_REAL tim0_2_7;
	  FFTW_REAL tre0_3_0;
	  FFTW_REAL tim0_3_0;
	  FFTW_REAL tre0_3_1;
	  FFTW_REAL tim0_3_1;
	  FFTW_REAL tre0_3_2;
	  FFTW_REAL tim0_3_2;
	  FFTW_REAL tre0_3_3;
	  FFTW_REAL tim0_3_3;
	  FFTW_REAL tre0_3_4;
	  FFTW_REAL tim0_3_4;
	  FFTW_REAL tre0_3_5;
	  FFTW_REAL tim0_3_5;
	  FFTW_REAL tre0_3_6;
	  FFTW_REAL tim0_3_6;
	  FFTW_REAL tre0_3_7;
	  FFTW_REAL tim0_3_7;
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = c_re(inout[0]);
		    tim2_0_0 = c_im(inout[0]);
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[16 * stride]);
			 ti = c_im(inout[16 * stride]);
			 twr = c_re(W[15]);
			 twi = c_im(W[15]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_0 = tre2_0_0 + tre2_1_0;
		    tim1_0_0 = tim2_0_0 + tim2_1_0;
		    tre1_1_0 = tre2_0_0 - tre2_1_0;
		    tim1_1_0 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[8 * stride]);
			 ti = c_im(inout[8 * stride]);
			 twr = c_re(W[7]);
			 twi = c_im(W[7]);
			 tre2_0_0 = (tr * twr) + (ti * twi);
			 tim2_0_0 = (ti * twr) - (tr * twi);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[24 * stride]);
			 ti = c_im(inout[24 * stride]);
			 twr = c_re(W[23]);
			 twi = c_im(W[23]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       tre0_0_0 = tre1_0_0 + tre1_0_1;
	       tim0_0_0 = tim1_0_0 + tim1_0_1;
	       tre0_2_0 = tre1_0_0 - tre1_0_1;
	       tim0_2_0 = tim1_0_0 - tim1_0_1;
	       tre0_1_0 = tre1_1_0 - tim1_1_1;
	       tim0_1_0 = tim1_1_0 + tre1_1_1;
	       tre0_3_0 = tre1_1_0 + tim1_1_1;
	       tim0_3_0 = tim1_1_0 - tre1_1_1;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[stride]);
			 ti = c_im(inout[stride]);
			 twr = c_re(W[0]);
			 twi = c_im(W[0]);
			 tre2_0_0 = (tr * twr) + (ti * twi);
			 tim2_0_0 = (ti * twr) - (tr * twi);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[17 * stride]);
			 ti = c_im(inout[17 * stride]);
			 twr = c_re(W[16]);
			 twi = c_im(W[16]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_0 = tre2_0_0 + tre2_1_0;
		    tim1_0_0 = tim2_0_0 + tim2_1_0;
		    tre1_1_0 = tre2_0_0 - tre2_1_0;
		    tim1_1_0 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[9 * stride]);
			 ti = c_im(inout[9 * stride]);
			 twr = c_re(W[8]);
			 twi = c_im(W[8]);
			 tre2_0_0 = (tr * twr) + (ti * twi);
			 tim2_0_0 = (ti * twr) - (tr * twi);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[25 * stride]);
			 ti = c_im(inout[25 * stride]);
			 twr = c_re(W[24]);
			 twi = c_im(W[24]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       tre0_0_1 = tre1_0_0 + tre1_0_1;
	       tim0_0_1 = tim1_0_0 + tim1_0_1;
	       tre0_2_1 = tre1_0_0 - tre1_0_1;
	       tim0_2_1 = tim1_0_0 - tim1_0_1;
	       tre0_1_1 = tre1_1_0 - tim1_1_1;
	       tim0_1_1 = tim1_1_0 + tre1_1_1;
	       tre0_3_1 = tre1_1_0 + tim1_1_1;
	       tim0_3_1 = tim1_1_0 - tre1_1_1;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[2 * stride]);
			 ti = c_im(inout[2 * stride]);
			 twr = c_re(W[1]);
			 twi = c_im(W[1]);
			 tre2_0_0 = (tr * twr) + (ti * twi);
			 tim2_0_0 = (ti * twr) - (tr * twi);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[18 * stride]);
			 ti = c_im(inout[18 * stride]);
			 twr = c_re(W[17]);
			 twi = c_im(W[17]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_0 = tre2_0_0 + tre2_1_0;
		    tim1_0_0 = tim2_0_0 + tim2_1_0;
		    tre1_1_0 = tre2_0_0 - tre2_1_0;
		    tim1_1_0 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[10 * stride]);
			 ti = c_im(inout[10 * stride]);
			 twr = c_re(W[9]);
			 twi = c_im(W[9]);
			 tre2_0_0 = (tr * twr) + (ti * twi);
			 tim2_0_0 = (ti * twr) - (tr * twi);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[26 * stride]);
			 ti = c_im(inout[26 * stride]);
			 twr = c_re(W[25]);
			 twi = c_im(W[25]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       tre0_0_2 = tre1_0_0 + tre1_0_1;
	       tim0_0_2 = tim1_0_0 + tim1_0_1;
	       tre0_2_2 = tre1_0_0 - tre1_0_1;
	       tim0_2_2 = tim1_0_0 - tim1_0_1;
	       tre0_1_2 = tre1_1_0 - tim1_1_1;
	       tim0_1_2 = tim1_1_0 + tre1_1_1;
	       tre0_3_2 = tre1_1_0 + tim1_1_1;
	       tim0_3_2 = tim1_1_0 - tre1_1_1;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[3 * stride]);
			 ti = c_im(inout[3 * stride]);
			 twr = c_re(W[2]);
			 twi = c_im(W[2]);
			 tre2_0_0 = (tr * twr) + (ti * twi);
			 tim2_0_0 = (ti * twr) - (tr * twi);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[19 * stride]);
			 ti = c_im(inout[19 * stride]);
			 twr = c_re(W[18]);
			 twi = c_im(W[18]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_0 = tre2_0_0 + tre2_1_0;
		    tim1_0_0 = tim2_0_0 + tim2_1_0;
		    tre1_1_0 = tre2_0_0 - tre2_1_0;
		    tim1_1_0 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[11 * stride]);
			 ti = c_im(inout[11 * stride]);
			 twr = c_re(W[10]);
			 twi = c_im(W[10]);
			 tre2_0_0 = (tr * twr) + (ti * twi);
			 tim2_0_0 = (ti * twr) - (tr * twi);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[27 * stride]);
			 ti = c_im(inout[27 * stride]);
			 twr = c_re(W[26]);
			 twi = c_im(W[26]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       tre0_0_3 = tre1_0_0 + tre1_0_1;
	       tim0_0_3 = tim1_0_0 + tim1_0_1;
	       tre0_2_3 = tre1_0_0 - tre1_0_1;
	       tim0_2_3 = tim1_0_0 - tim1_0_1;
	       tre0_1_3 = tre1_1_0 - tim1_1_1;
	       tim0_1_3 = tim1_1_0 + tre1_1_1;
	       tre0_3_3 = tre1_1_0 + tim1_1_1;
	       tim0_3_3 = tim1_1_0 - tre1_1_1;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[4 * stride]);
			 ti = c_im(inout[4 * stride]);
			 twr = c_re(W[3]);
			 twi = c_im(W[3]);
			 tre2_0_0 = (tr * twr) + (ti * twi);
			 tim2_0_0 = (ti * twr) - (tr * twi);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[20 * stride]);
			 ti = c_im(inout[20 * stride]);
			 twr = c_re(W[19]);
			 twi = c_im(W[19]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_0 = tre2_0_0 + tre2_1_0;
		    tim1_0_0 = tim2_0_0 + tim2_1_0;
		    tre1_1_0 = tre2_0_0 - tre2_1_0;
		    tim1_1_0 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[12 * stride]);
			 ti = c_im(inout[12 * stride]);
			 twr = c_re(W[11]);
			 twi = c_im(W[11]);
			 tre2_0_0 = (tr * twr) + (ti * twi);
			 tim2_0_0 = (ti * twr) - (tr * twi);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[28 * stride]);
			 ti = c_im(inout[28 * stride]);
			 twr = c_re(W[27]);
			 twi = c_im(W[27]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       tre0_0_4 = tre1_0_0 + tre1_0_1;
	       tim0_0_4 = tim1_0_0 + tim1_0_1;
	       tre0_2_4 = tre1_0_0 - tre1_0_1;
	       tim0_2_4 = tim1_0_0 - tim1_0_1;
	       tre0_1_4 = tre1_1_0 - tim1_1_1;
	       tim0_1_4 = tim1_1_0 + tre1_1_1;
	       tre0_3_4 = tre1_1_0 + tim1_1_1;
	       tim0_3_4 = tim1_1_0 - tre1_1_1;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[5 * stride]);
			 ti = c_im(inout[5 * stride]);
			 twr = c_re(W[4]);
			 twi = c_im(W[4]);
			 tre2_0_0 = (tr * twr) + (ti * twi);
			 tim2_0_0 = (ti * twr) - (tr * twi);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[21 * stride]);
			 ti = c_im(inout[21 * stride]);
			 twr = c_re(W[20]);
			 twi = c_im(W[20]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_0 = tre2_0_0 + tre2_1_0;
		    tim1_0_0 = tim2_0_0 + tim2_1_0;
		    tre1_1_0 = tre2_0_0 - tre2_1_0;
		    tim1_1_0 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[13 * stride]);
			 ti = c_im(inout[13 * stride]);
			 twr = c_re(W[12]);
			 twi = c_im(W[12]);
			 tre2_0_0 = (tr * twr) + (ti * twi);
			 tim2_0_0 = (ti * twr) - (tr * twi);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[29 * stride]);
			 ti = c_im(inout[29 * stride]);
			 twr = c_re(W[28]);
			 twi = c_im(W[28]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       tre0_0_5 = tre1_0_0 + tre1_0_1;
	       tim0_0_5 = tim1_0_0 + tim1_0_1;
	       tre0_2_5 = tre1_0_0 - tre1_0_1;
	       tim0_2_5 = tim1_0_0 - tim1_0_1;
	       tre0_1_5 = tre1_1_0 - tim1_1_1;
	       tim0_1_5 = tim1_1_0 + tre1_1_1;
	       tre0_3_5 = tre1_1_0 + tim1_1_1;
	       tim0_3_5 = tim1_1_0 - tre1_1_1;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[6 * stride]);
			 ti = c_im(inout[6 * stride]);
			 twr = c_re(W[5]);
			 twi = c_im(W[5]);
			 tre2_0_0 = (tr * twr) + (ti * twi);
			 tim2_0_0 = (ti * twr) - (tr * twi);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[22 * stride]);
			 ti = c_im(inout[22 * stride]);
			 twr = c_re(W[21]);
			 twi = c_im(W[21]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_0 = tre2_0_0 + tre2_1_0;
		    tim1_0_0 = tim2_0_0 + tim2_1_0;
		    tre1_1_0 = tre2_0_0 - tre2_1_0;
		    tim1_1_0 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[14 * stride]);
			 ti = c_im(inout[14 * stride]);
			 twr = c_re(W[13]);
			 twi = c_im(W[13]);
			 tre2_0_0 = (tr * twr) + (ti * twi);
			 tim2_0_0 = (ti * twr) - (tr * twi);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[30 * stride]);
			 ti = c_im(inout[30 * stride]);
			 twr = c_re(W[29]);
			 twi = c_im(W[29]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       tre0_0_6 = tre1_0_0 + tre1_0_1;
	       tim0_0_6 = tim1_0_0 + tim1_0_1;
	       tre0_2_6 = tre1_0_0 - tre1_0_1;
	       tim0_2_6 = tim1_0_0 - tim1_0_1;
	       tre0_1_6 = tre1_1_0 - tim1_1_1;
	       tim0_1_6 = tim1_1_0 + tre1_1_1;
	       tre0_3_6 = tre1_1_0 + tim1_1_1;
	       tim0_3_6 = tim1_1_0 - tre1_1_1;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[7 * stride]);
			 ti = c_im(inout[7 * stride]);
			 twr = c_re(W[6]);
			 twi = c_im(W[6]);
			 tre2_0_0 = (tr * twr) + (ti * twi);
			 tim2_0_0 = (ti * twr) - (tr * twi);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[23 * stride]);
			 ti = c_im(inout[23 * stride]);
			 twr = c_re(W[22]);
			 twi = c_im(W[22]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_0 = tre2_0_0 + tre2_1_0;
		    tim1_0_0 = tim2_0_0 + tim2_1_0;
		    tre1_1_0 = tre2_0_0 - tre2_1_0;
		    tim1_1_0 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[15 * stride]);
			 ti = c_im(inout[15 * stride]);
			 twr = c_re(W[14]);
			 twi = c_im(W[14]);
			 tre2_0_0 = (tr * twr) + (ti * twi);
			 tim2_0_0 = (ti * twr) - (tr * twi);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[31 * stride]);
			 ti = c_im(inout[31 * stride]);
			 twr = c_re(W[30]);
			 twi = c_im(W[30]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       tre0_0_7 = tre1_0_0 + tre1_0_1;
	       tim0_0_7 = tim1_0_0 + tim1_0_1;
	       tre0_2_7 = tre1_0_0 - tre1_0_1;
	       tim0_2_7 = tim1_0_0 - tim1_0_1;
	       tre0_1_7 = tre1_1_0 - tim1_1_1;
	       tim0_1_7 = tim1_1_0 + tre1_1_1;
	       tre0_3_7 = tre1_1_0 + tim1_1_1;
	       tim0_3_7 = tim1_1_0 - tre1_1_1;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_0_2;
	       FFTW_REAL tim1_0_2;
	       FFTW_REAL tre1_0_3;
	       FFTW_REAL tim1_0_3;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       FFTW_REAL tre1_1_2;
	       FFTW_REAL tim1_1_2;
	       FFTW_REAL tre1_1_3;
	       FFTW_REAL tim1_1_3;
	       tre1_0_0 = tre0_0_0 + tre0_0_4;
	       tim1_0_0 = tim0_0_0 + tim0_0_4;
	       tre1_1_0 = tre0_0_0 - tre0_0_4;
	       tim1_1_0 = tim0_0_0 - tim0_0_4;
	       tre1_0_1 = tre0_0_1 + tre0_0_5;
	       tim1_0_1 = tim0_0_1 + tim0_0_5;
	       tre1_1_1 = tre0_0_1 - tre0_0_5;
	       tim1_1_1 = tim0_0_1 - tim0_0_5;
	       tre1_0_2 = tre0_0_2 + tre0_0_6;
	       tim1_0_2 = tim0_0_2 + tim0_0_6;
	       tre1_1_2 = tre0_0_2 - tre0_0_6;
	       tim1_1_2 = tim0_0_2 - tim0_0_6;
	       tre1_0_3 = tre0_0_3 + tre0_0_7;
	       tim1_0_3 = tim0_0_3 + tim0_0_7;
	       tre1_1_3 = tre0_0_3 - tre0_0_7;
	       tim1_1_3 = tim0_0_3 - tim0_0_7;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_0_0 + tre1_0_2;
		    tim2_0_0 = tim1_0_0 + tim1_0_2;
		    tre2_1_0 = tre1_0_0 - tre1_0_2;
		    tim2_1_0 = tim1_0_0 - tim1_0_2;
		    tre2_0_1 = tre1_0_1 + tre1_0_3;
		    tim2_0_1 = tim1_0_1 + tim1_0_3;
		    tre2_1_1 = tre1_0_1 - tre1_0_3;
		    tim2_1_1 = tim1_0_1 - tim1_0_3;
		    c_re(inout[0]) = tre2_0_0 + tre2_0_1;
		    c_im(inout[0]) = tim2_0_0 + tim2_0_1;
		    c_re(inout[16 * stride]) = tre2_0_0 - tre2_0_1;
		    c_im(inout[16 * stride]) = tim2_0_0 - tim2_0_1;
		    c_re(inout[8 * stride]) = tre2_1_0 - tim2_1_1;
		    c_im(inout[8 * stride]) = tim2_1_0 + tre2_1_1;
		    c_re(inout[24 * stride]) = tre2_1_0 + tim2_1_1;
		    c_im(inout[24 * stride]) = tim2_1_0 - tre2_1_1;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_1_0 - tim1_1_2;
		    tim2_0_0 = tim1_1_0 + tre1_1_2;
		    tre2_1_0 = tre1_1_0 + tim1_1_2;
		    tim2_1_0 = tim1_1_0 - tre1_1_2;
		    {
			 FFTW_REAL tre3_0_0;
			 FFTW_REAL tim3_0_0;
			 FFTW_REAL tre3_1_0;
			 FFTW_REAL tim3_1_0;
			 tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 - tim1_1_1);
			 tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 + tre1_1_1);
			 tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 + tim1_1_3);
			 tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 - tim1_1_3);
			 tre2_0_1 = tre3_0_0 - tre3_1_0;
			 tim2_0_1 = tim3_0_0 + tim3_1_0;
			 tre2_1_1 = tre3_0_0 + tre3_1_0;
			 tim2_1_1 = tim3_0_0 - tim3_1_0;
		    }
		    c_re(inout[4 * stride]) = tre2_0_0 + tre2_0_1;
		    c_im(inout[4 * stride]) = tim2_0_0 + tim2_0_1;
		    c_re(inout[20 * stride]) = tre2_0_0 - tre2_0_1;
		    c_im(inout[20 * stride]) = tim2_0_0 - tim2_0_1;
		    c_re(inout[12 * stride]) = tre2_1_0 - tim2_1_1;
		    c_im(inout[12 * stride]) = tim2_1_0 + tre2_1_1;
		    c_re(inout[28 * stride]) = tre2_1_0 + tim2_1_1;
		    c_im(inout[28 * stride]) = tim2_1_0 - tre2_1_1;
	       }
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_0_2;
	       FFTW_REAL tim1_0_2;
	       FFTW_REAL tre1_0_3;
	       FFTW_REAL tim1_0_3;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       FFTW_REAL tre1_1_2;
	       FFTW_REAL tim1_1_2;
	       FFTW_REAL tre1_1_3;
	       FFTW_REAL tim1_1_3;
	       {
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_1_4 - tim0_1_4);
		    tim2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_1_4 + tre0_1_4);
		    tre1_0_0 = tre0_1_0 + tre2_1_0;
		    tim1_0_0 = tim0_1_0 + tim2_1_0;
		    tre1_1_0 = tre0_1_0 - tre2_1_0;
		    tim1_1_0 = tim0_1_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K980785280) * tre0_1_1) - (((FFTW_REAL) FFTW_K195090322) * tim0_1_1);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K980785280) * tim0_1_1) + (((FFTW_REAL) FFTW_K195090322) * tre0_1_1);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K555570233) * tre0_1_5) - (((FFTW_REAL) FFTW_K831469612) * tim0_1_5);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K555570233) * tim0_1_5) + (((FFTW_REAL) FFTW_K831469612) * tre0_1_5);
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K923879532) * tre0_1_2) - (((FFTW_REAL) FFTW_K382683432) * tim0_1_2);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K923879532) * tim0_1_2) + (((FFTW_REAL) FFTW_K382683432) * tre0_1_2);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tre0_1_6) - (((FFTW_REAL) FFTW_K923879532) * tim0_1_6);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tim0_1_6) + (((FFTW_REAL) FFTW_K923879532) * tre0_1_6);
		    tre1_0_2 = tre2_0_0 + tre2_1_0;
		    tim1_0_2 = tim2_0_0 + tim2_1_0;
		    tre1_1_2 = tre2_0_0 - tre2_1_0;
		    tim1_1_2 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K831469612) * tre0_1_3) - (((FFTW_REAL) FFTW_K555570233) * tim0_1_3);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K831469612) * tim0_1_3) + (((FFTW_REAL) FFTW_K555570233) * tre0_1_3);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K195090322) * tre0_1_7) - (((FFTW_REAL) FFTW_K980785280) * tim0_1_7);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K195090322) * tim0_1_7) + (((FFTW_REAL) FFTW_K980785280) * tre0_1_7);
		    tre1_0_3 = tre2_0_0 + tre2_1_0;
		    tim1_0_3 = tim2_0_0 + tim2_1_0;
		    tre1_1_3 = tre2_0_0 - tre2_1_0;
		    tim1_1_3 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_0_0 + tre1_0_2;
		    tim2_0_0 = tim1_0_0 + tim1_0_2;
		    tre2_1_0 = tre1_0_0 - tre1_0_2;
		    tim2_1_0 = tim1_0_0 - tim1_0_2;
		    tre2_0_1 = tre1_0_1 + tre1_0_3;
		    tim2_0_1 = tim1_0_1 + tim1_0_3;
		    tre2_1_1 = tre1_0_1 - tre1_0_3;
		    tim2_1_1 = tim1_0_1 - tim1_0_3;
		    c_re(inout[stride]) = tre2_0_0 + tre2_0_1;
		    c_im(inout[stride]) = tim2_0_0 + tim2_0_1;
		    c_re(inout[17 * stride]) = tre2_0_0 - tre2_0_1;
		    c_im(inout[17 * stride]) = tim2_0_0 - tim2_0_1;
		    c_re(inout[9 * stride]) = tre2_1_0 - tim2_1_1;
		    c_im(inout[9 * stride]) = tim2_1_0 + tre2_1_1;
		    c_re(inout[25 * stride]) = tre2_1_0 + tim2_1_1;
		    c_im(inout[25 * stride]) = tim2_1_0 - tre2_1_1;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_1_0 - tim1_1_2;
		    tim2_0_0 = tim1_1_0 + tre1_1_2;
		    tre2_1_0 = tre1_1_0 + tim1_1_2;
		    tim2_1_0 = tim1_1_0 - tre1_1_2;
		    {
			 FFTW_REAL tre3_0_0;
			 FFTW_REAL tim3_0_0;
			 FFTW_REAL tre3_1_0;
			 FFTW_REAL tim3_1_0;
			 tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 - tim1_1_1);
			 tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 + tre1_1_1);
			 tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 + tim1_1_3);
			 tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 - tim1_1_3);
			 tre2_0_1 = tre3_0_0 - tre3_1_0;
			 tim2_0_1 = tim3_0_0 + tim3_1_0;
			 tre2_1_1 = tre3_0_0 + tre3_1_0;
			 tim2_1_1 = tim3_0_0 - tim3_1_0;
		    }
		    c_re(inout[5 * stride]) = tre2_0_0 + tre2_0_1;
		    c_im(inout[5 * stride]) = tim2_0_0 + tim2_0_1;
		    c_re(inout[21 * stride]) = tre2_0_0 - tre2_0_1;
		    c_im(inout[21 * stride]) = tim2_0_0 - tim2_0_1;
		    c_re(inout[13 * stride]) = tre2_1_0 - tim2_1_1;
		    c_im(inout[13 * stride]) = tim2_1_0 + tre2_1_1;
		    c_re(inout[29 * stride]) = tre2_1_0 + tim2_1_1;
		    c_im(inout[29 * stride]) = tim2_1_0 - tre2_1_1;
	       }
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_0_2;
	       FFTW_REAL tim1_0_2;
	       FFTW_REAL tre1_0_3;
	       FFTW_REAL tim1_0_3;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       FFTW_REAL tre1_1_2;
	       FFTW_REAL tim1_1_2;
	       FFTW_REAL tre1_1_3;
	       FFTW_REAL tim1_1_3;
	       tre1_0_0 = tre0_2_0 - tim0_2_4;
	       tim1_0_0 = tim0_2_0 + tre0_2_4;
	       tre1_1_0 = tre0_2_0 + tim0_2_4;
	       tim1_1_0 = tim0_2_0 - tre0_2_4;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K923879532) * tre0_2_1) - (((FFTW_REAL) FFTW_K382683432) * tim0_2_1);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K923879532) * tim0_2_1) + (((FFTW_REAL) FFTW_K382683432) * tre0_2_1);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tre0_2_5) + (((FFTW_REAL) FFTW_K923879532) * tim0_2_5);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K923879532) * tre0_2_5) - (((FFTW_REAL) FFTW_K382683432) * tim0_2_5);
		    tre1_0_1 = tre2_0_0 - tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 + tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_2_2 - tim0_2_2);
		    tim2_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_2_2 + tre0_2_2);
		    tre2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_2_6 + tim0_2_6);
		    tim2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_2_6 - tim0_2_6);
		    tre1_0_2 = tre2_0_0 - tre2_1_0;
		    tim1_0_2 = tim2_0_0 + tim2_1_0;
		    tre1_1_2 = tre2_0_0 + tre2_1_0;
		    tim1_1_2 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K382683432) * tre0_2_3) - (((FFTW_REAL) FFTW_K923879532) * tim0_2_3);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K382683432) * tim0_2_3) + (((FFTW_REAL) FFTW_K923879532) * tre0_2_3);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K923879532) * tre0_2_7) + (((FFTW_REAL) FFTW_K382683432) * tim0_2_7);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tre0_2_7) - (((FFTW_REAL) FFTW_K923879532) * tim0_2_7);
		    tre1_0_3 = tre2_0_0 - tre2_1_0;
		    tim1_0_3 = tim2_0_0 + tim2_1_0;
		    tre1_1_3 = tre2_0_0 + tre2_1_0;
		    tim1_1_3 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_0_0 + tre1_0_2;
		    tim2_0_0 = tim1_0_0 + tim1_0_2;
		    tre2_1_0 = tre1_0_0 - tre1_0_2;
		    tim2_1_0 = tim1_0_0 - tim1_0_2;
		    tre2_0_1 = tre1_0_1 + tre1_0_3;
		    tim2_0_1 = tim1_0_1 + tim1_0_3;
		    tre2_1_1 = tre1_0_1 - tre1_0_3;
		    tim2_1_1 = tim1_0_1 - tim1_0_3;
		    c_re(inout[2 * stride]) = tre2_0_0 + tre2_0_1;
		    c_im(inout[2 * stride]) = tim2_0_0 + tim2_0_1;
		    c_re(inout[18 * stride]) = tre2_0_0 - tre2_0_1;
		    c_im(inout[18 * stride]) = tim2_0_0 - tim2_0_1;
		    c_re(inout[10 * stride]) = tre2_1_0 - tim2_1_1;
		    c_im(inout[10 * stride]) = tim2_1_0 + tre2_1_1;
		    c_re(inout[26 * stride]) = tre2_1_0 + tim2_1_1;
		    c_im(inout[26 * stride]) = tim2_1_0 - tre2_1_1;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_1_0 - tim1_1_2;
		    tim2_0_0 = tim1_1_0 + tre1_1_2;
		    tre2_1_0 = tre1_1_0 + tim1_1_2;
		    tim2_1_0 = tim1_1_0 - tre1_1_2;
		    {
			 FFTW_REAL tre3_0_0;
			 FFTW_REAL tim3_0_0;
			 FFTW_REAL tre3_1_0;
			 FFTW_REAL tim3_1_0;
			 tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 - tim1_1_1);
			 tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 + tre1_1_1);
			 tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 + tim1_1_3);
			 tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 - tim1_1_3);
			 tre2_0_1 = tre3_0_0 - tre3_1_0;
			 tim2_0_1 = tim3_0_0 + tim3_1_0;
			 tre2_1_1 = tre3_0_0 + tre3_1_0;
			 tim2_1_1 = tim3_0_0 - tim3_1_0;
		    }
		    c_re(inout[6 * stride]) = tre2_0_0 + tre2_0_1;
		    c_im(inout[6 * stride]) = tim2_0_0 + tim2_0_1;
		    c_re(inout[22 * stride]) = tre2_0_0 - tre2_0_1;
		    c_im(inout[22 * stride]) = tim2_0_0 - tim2_0_1;
		    c_re(inout[14 * stride]) = tre2_1_0 - tim2_1_1;
		    c_im(inout[14 * stride]) = tim2_1_0 + tre2_1_1;
		    c_re(inout[30 * stride]) = tre2_1_0 + tim2_1_1;
		    c_im(inout[30 * stride]) = tim2_1_0 - tre2_1_1;
	       }
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_0_2;
	       FFTW_REAL tim1_0_2;
	       FFTW_REAL tre1_0_3;
	       FFTW_REAL tim1_0_3;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       FFTW_REAL tre1_1_2;
	       FFTW_REAL tim1_1_2;
	       FFTW_REAL tre1_1_3;
	       FFTW_REAL tim1_1_3;
	       {
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_3_4 + tim0_3_4);
		    tim2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_3_4 - tim0_3_4);
		    tre1_0_0 = tre0_3_0 - tre2_1_0;
		    tim1_0_0 = tim0_3_0 + tim2_1_0;
		    tre1_1_0 = tre0_3_0 + tre2_1_0;
		    tim1_1_0 = tim0_3_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K831469612) * tre0_3_1) - (((FFTW_REAL) FFTW_K555570233) * tim0_3_1);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K831469612) * tim0_3_1) + (((FFTW_REAL) FFTW_K555570233) * tre0_3_1);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K980785280) * tre0_3_5) + (((FFTW_REAL) FFTW_K195090322) * tim0_3_5);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K195090322) * tre0_3_5) - (((FFTW_REAL) FFTW_K980785280) * tim0_3_5);
		    tre1_0_1 = tre2_0_0 - tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 + tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K382683432) * tre0_3_2) - (((FFTW_REAL) FFTW_K923879532) * tim0_3_2);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K382683432) * tim0_3_2) + (((FFTW_REAL) FFTW_K923879532) * tre0_3_2);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tim0_3_6) - (((FFTW_REAL) FFTW_K923879532) * tre0_3_6);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K923879532) * tim0_3_6) + (((FFTW_REAL) FFTW_K382683432) * tre0_3_6);
		    tre1_0_2 = tre2_0_0 + tre2_1_0;
		    tim1_0_2 = tim2_0_0 - tim2_1_0;
		    tre1_1_2 = tre2_0_0 - tre2_1_0;
		    tim1_1_2 = tim2_0_0 + tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K195090322) * tre0_3_3) + (((FFTW_REAL) FFTW_K980785280) * tim0_3_3);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K980785280) * tre0_3_3) - (((FFTW_REAL) FFTW_K195090322) * tim0_3_3);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K831469612) * tim0_3_7) - (((FFTW_REAL) FFTW_K555570233) * tre0_3_7);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K555570233) * tim0_3_7) + (((FFTW_REAL) FFTW_K831469612) * tre0_3_7);
		    tre1_0_3 = tre2_1_0 - tre2_0_0;
		    tim1_0_3 = tim2_0_0 - tim2_1_0;
		    tre1_1_3 = (-(tre2_0_0 + tre2_1_0));
		    tim1_1_3 = tim2_0_0 + tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_0_0 + tre1_0_2;
		    tim2_0_0 = tim1_0_0 + tim1_0_2;
		    tre2_1_0 = tre1_0_0 - tre1_0_2;
		    tim2_1_0 = tim1_0_0 - tim1_0_2;
		    tre2_0_1 = tre1_0_1 + tre1_0_3;
		    tim2_0_1 = tim1_0_1 + tim1_0_3;
		    tre2_1_1 = tre1_0_1 - tre1_0_3;
		    tim2_1_1 = tim1_0_1 - tim1_0_3;
		    c_re(inout[3 * stride]) = tre2_0_0 + tre2_0_1;
		    c_im(inout[3 * stride]) = tim2_0_0 + tim2_0_1;
		    c_re(inout[19 * stride]) = tre2_0_0 - tre2_0_1;
		    c_im(inout[19 * stride]) = tim2_0_0 - tim2_0_1;
		    c_re(inout[11 * stride]) = tre2_1_0 - tim2_1_1;
		    c_im(inout[11 * stride]) = tim2_1_0 + tre2_1_1;
		    c_re(inout[27 * stride]) = tre2_1_0 + tim2_1_1;
		    c_im(inout[27 * stride]) = tim2_1_0 - tre2_1_1;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_1_0 - tim1_1_2;
		    tim2_0_0 = tim1_1_0 + tre1_1_2;
		    tre2_1_0 = tre1_1_0 + tim1_1_2;
		    tim2_1_0 = tim1_1_0 - tre1_1_2;
		    {
			 FFTW_REAL tre3_0_0;
			 FFTW_REAL tim3_0_0;
			 FFTW_REAL tre3_1_0;
			 FFTW_REAL tim3_1_0;
			 tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 - tim1_1_1);
			 tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 + tre1_1_1);
			 tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 + tim1_1_3);
			 tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 - tim1_1_3);
			 tre2_0_1 = tre3_0_0 - tre3_1_0;
			 tim2_0_1 = tim3_0_0 + tim3_1_0;
			 tre2_1_1 = tre3_0_0 + tre3_1_0;
			 tim2_1_1 = tim3_0_0 - tim3_1_0;
		    }
		    c_re(inout[7 * stride]) = tre2_0_0 + tre2_0_1;
		    c_im(inout[7 * stride]) = tim2_0_0 + tim2_0_1;
		    c_re(inout[23 * stride]) = tre2_0_0 - tre2_0_1;
		    c_im(inout[23 * stride]) = tim2_0_0 - tim2_0_1;
		    c_re(inout[15 * stride]) = tre2_1_0 - tim2_1_1;
		    c_im(inout[15 * stride]) = tim2_1_0 + tre2_1_1;
		    c_re(inout[31 * stride]) = tre2_1_0 + tim2_1_1;
		    c_im(inout[31 * stride]) = tim2_1_0 - tre2_1_1;
	       }
	  }
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 22 FP additions and 12 FP multiplications */

void fftwi_twiddle_4(FFTW_COMPLEX *A, const FFTW_COMPLEX *W, int stride, int m, int dist)
{
     int i;
     COMPLEX *inout;
     inout = A;
     for (i = 0; i < m; i = i + 1, inout = inout + dist, W = W + 3) {
	  FFTW_REAL tre0_0_0;
	  FFTW_REAL tim0_0_0;
	  FFTW_REAL tre0_0_1;
	  FFTW_REAL tim0_0_1;
	  FFTW_REAL tre0_1_0;
	  FFTW_REAL tim0_1_0;
	  FFTW_REAL tre0_1_1;
	  FFTW_REAL tim0_1_1;
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       tre1_0_0 = c_re(inout[0]);
	       tim1_0_0 = c_im(inout[0]);
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[2 * stride]);
		    ti = c_im(inout[2 * stride]);
		    twr = c_re(W[1]);
		    twi = c_im(W[1]);
		    tre1_1_0 = (tr * twr) + (ti * twi);
		    tim1_1_0 = (ti * twr) - (tr * twi);
	       }
	       tre0_0_0 = tre1_0_0 + tre1_1_0;
	       tim0_0_0 = tim1_0_0 + tim1_1_0;
	       tre0_1_0 = tre1_0_0 - tre1_1_0;
	       tim0_1_0 = tim1_0_0 - tim1_1_0;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[stride]);
		    ti = c_im(inout[stride]);
		    twr = c_re(W[0]);
		    twi = c_im(W[0]);
		    tre1_0_0 = (tr * twr) + (ti * twi);
		    tim1_0_0 = (ti * twr) - (tr * twi);
	       }
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[3 * stride]);
		    ti = c_im(inout[3 * stride]);
		    twr = c_re(W[2]);
		    twi = c_im(W[2]);
		    tre1_1_0 = (tr * twr) + (ti * twi);
		    tim1_1_0 = (ti * twr) - (tr * twi);
	       }
	       tre0_0_1 = tre1_0_0 + tre1_1_0;
	       tim0_0_1 = tim1_0_0 + tim1_1_0;
	       tre0_1_1 = tre1_0_0 - tre1_1_0;
	       tim0_1_1 = tim1_0_0 - tim1_1_0;
	  }
	  c_re(inout[0]) = tre0_0_0 + tre0_0_1;
	  c_im(inout[0]) = tim0_0_0 + tim0_0_1;
	  c_re(inout[2 * stride]) = tre0_0_0 - tre0_0_1;
	  c_im(inout[2 * stride]) = tim0_0_0 - tim0_0_1;
	  c_re(inout[stride]) = tre0_1_0 - tim0_1_1;
	  c_im(inout[stride]) = tim0_1_0 + tre0_1_1;
	  c_re(inout[3 * stride]) = tre0_1_0 + tim0_1_1;
	  c_im(inout[3 * stride]) = tim0_1_0 - tre0_1_1;
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 52 FP additions and 32 FP multiplications */

void fftwi_twiddle_5(FFTW_COMPLEX *A, const FFTW_COMPLEX *W, int stride, int m, int dist)
{
     int i;
     COMPLEX *inout;
     inout = A;
     for (i = 0; i < m; i = i + 1, inout = inout + dist, W = W + 4) {
	  FFTW_REAL tre0_0_0;
	  FFTW_REAL tim0_0_0;
	  FFTW_REAL tre0_1_0;
	  FFTW_REAL tim0_1_0;
	  FFTW_REAL tre0_2_0;
	  FFTW_REAL tim0_2_0;
	  FFTW_REAL tre0_3_0;
	  FFTW_REAL tim0_3_0;
	  FFTW_REAL tre0_4_0;
	  FFTW_REAL tim0_4_0;
	  tre0_0_0 = c_re(inout[0]);
	  tim0_0_0 = c_im(inout[0]);
	  {
	       FFTW_REAL tr;
	       FFTW_REAL ti;
	       FFTW_REAL twr;
	       FFTW_REAL twi;
	       tr = c_re(inout[stride]);
	       ti = c_im(inout[stride]);
	       twr = c_re(W[0]);
	       twi = c_im(W[0]);
	       tre0_1_0 = (tr * twr) + (ti * twi);
	       tim0_1_0 = (ti * twr) - (tr * twi);
	  }
	  {
	       FFTW_REAL tr;
	       FFTW_REAL ti;
	       FFTW_REAL twr;
	       FFTW_REAL twi;
	       tr = c_re(inout[2 * stride]);
	       ti = c_im(inout[2 * stride]);
	       twr = c_re(W[1]);
	       twi = c_im(W[1]);
	       tre0_2_0 = (tr * twr) + (ti * twi);
	       tim0_2_0 = (ti * twr) - (tr * twi);
	  }
	  {
	       FFTW_REAL tr;
	       FFTW_REAL ti;
	       FFTW_REAL twr;
	       FFTW_REAL twi;
	       tr = c_re(inout[3 * stride]);
	       ti = c_im(inout[3 * stride]);
	       twr = c_re(W[2]);
	       twi = c_im(W[2]);
	       tre0_3_0 = (tr * twr) + (ti * twi);
	       tim0_3_0 = (ti * twr) - (tr * twi);
	  }
	  {
	       FFTW_REAL tr;
	       FFTW_REAL ti;
	       FFTW_REAL twr;
	       FFTW_REAL twi;
	       tr = c_re(inout[4 * stride]);
	       ti = c_im(inout[4 * stride]);
	       twr = c_re(W[3]);
	       twi = c_im(W[3]);
	       tre0_4_0 = (tr * twr) + (ti * twi);
	       tim0_4_0 = (ti * twr) - (tr * twi);
	  }
	  c_re(inout[0]) = tre0_0_0 + tre0_1_0 + tre0_2_0 + tre0_3_0 + tre0_4_0;
	  c_im(inout[0]) = tim0_0_0 + tim0_1_0 + tim0_2_0 + tim0_3_0 + tim0_4_0;
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tre1_1_0;
	       tre1_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K309016994) * (tre0_1_0 + tre0_4_0)) - (((FFTW_REAL) FFTW_K809016994) * (tre0_2_0 + tre0_3_0));
	       tre1_1_0 = (((FFTW_REAL) FFTW_K951056516) * (tim0_4_0 - tim0_1_0)) + (((FFTW_REAL) FFTW_K587785252) * (tim0_3_0 - tim0_2_0));
	       c_re(inout[stride]) = tre1_0_0 + tre1_1_0;
	       c_re(inout[4 * stride]) = tre1_0_0 - tre1_1_0;
	  }
	  {
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tim1_1_0;
	       tim1_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K309016994) * (tim0_1_0 + tim0_4_0)) - (((FFTW_REAL) FFTW_K809016994) * (tim0_2_0 + tim0_3_0));
	       tim1_1_0 = (((FFTW_REAL) FFTW_K951056516) * (tre0_1_0 - tre0_4_0)) + (((FFTW_REAL) FFTW_K587785252) * (tre0_2_0 - tre0_3_0));
	       c_im(inout[stride]) = tim1_0_0 + tim1_1_0;
	       c_im(inout[4 * stride]) = tim1_0_0 - tim1_1_0;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tre1_1_0;
	       tre1_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K309016994) * (tre0_2_0 + tre0_3_0)) - (((FFTW_REAL) FFTW_K809016994) * (tre0_1_0 + tre0_4_0));
	       tre1_1_0 = (((FFTW_REAL) FFTW_K587785252) * (tim0_4_0 - tim0_1_0)) + (((FFTW_REAL) FFTW_K951056516) * (tim0_2_0 - tim0_3_0));
	       c_re(inout[2 * stride]) = tre1_0_0 + tre1_1_0;
	       c_re(inout[3 * stride]) = tre1_0_0 - tre1_1_0;
	  }
	  {
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tim1_1_0;
	       tim1_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K309016994) * (tim0_2_0 + tim0_3_0)) - (((FFTW_REAL) FFTW_K809016994) * (tim0_1_0 + tim0_4_0));
	       tim1_1_0 = (((FFTW_REAL) FFTW_K587785252) * (tre0_1_0 - tre0_4_0)) + (((FFTW_REAL) FFTW_K951056516) * (tre0_3_0 - tre0_2_0));
	       c_im(inout[2 * stride]) = tim1_0_0 + tim1_1_0;
	       c_im(inout[3 * stride]) = tim1_0_0 - tim1_1_0;
	  }
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 50 FP additions and 28 FP multiplications */

void fftwi_twiddle_6(FFTW_COMPLEX *A, const FFTW_COMPLEX *W, int stride, int m, int dist)
{
     int i;
     COMPLEX *inout;
     inout = A;
     for (i = 0; i < m; i = i + 1, inout = inout + dist, W = W + 5) {
	  FFTW_REAL tre0_0_0;
	  FFTW_REAL tim0_0_0;
	  FFTW_REAL tre0_0_1;
	  FFTW_REAL tim0_0_1;
	  FFTW_REAL tre0_0_2;
	  FFTW_REAL tim0_0_2;
	  FFTW_REAL tre0_1_0;
	  FFTW_REAL tim0_1_0;
	  FFTW_REAL tre0_1_1;
	  FFTW_REAL tim0_1_1;
	  FFTW_REAL tre0_1_2;
	  FFTW_REAL tim0_1_2;
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       tre1_0_0 = c_re(inout[0]);
	       tim1_0_0 = c_im(inout[0]);
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[3 * stride]);
		    ti = c_im(inout[3 * stride]);
		    twr = c_re(W[2]);
		    twi = c_im(W[2]);
		    tre1_1_0 = (tr * twr) + (ti * twi);
		    tim1_1_0 = (ti * twr) - (tr * twi);
	       }
	       tre0_0_0 = tre1_0_0 + tre1_1_0;
	       tim0_0_0 = tim1_0_0 + tim1_1_0;
	       tre0_1_0 = tre1_0_0 - tre1_1_0;
	       tim0_1_0 = tim1_0_0 - tim1_1_0;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[2 * stride]);
		    ti = c_im(inout[2 * stride]);
		    twr = c_re(W[1]);
		    twi = c_im(W[1]);
		    tre1_0_0 = (tr * twr) + (ti * twi);
		    tim1_0_0 = (ti * twr) - (tr * twi);
	       }
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[5 * stride]);
		    ti = c_im(inout[5 * stride]);
		    twr = c_re(W[4]);
		    twi = c_im(W[4]);
		    tre1_1_0 = (tr * twr) + (ti * twi);
		    tim1_1_0 = (ti * twr) - (tr * twi);
	       }
	       tre0_0_1 = tre1_0_0 + tre1_1_0;
	       tim0_0_1 = tim1_0_0 + tim1_1_0;
	       tre0_1_1 = tre1_0_0 - tre1_1_0;
	       tim0_1_1 = tim1_0_0 - tim1_1_0;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[4 * stride]);
		    ti = c_im(inout[4 * stride]);
		    twr = c_re(W[3]);
		    twi = c_im(W[3]);
		    tre1_0_0 = (tr * twr) + (ti * twi);
		    tim1_0_0 = (ti * twr) - (tr * twi);
	       }
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[stride]);
		    ti = c_im(inout[stride]);
		    twr = c_re(W[0]);
		    twi = c_im(W[0]);
		    tre1_1_0 = (tr * twr) + (ti * twi);
		    tim1_1_0 = (ti * twr) - (tr * twi);
	       }
	       tre0_0_2 = tre1_0_0 + tre1_1_0;
	       tim0_0_2 = tim1_0_0 + tim1_1_0;
	       tre0_1_2 = tre1_0_0 - tre1_1_0;
	       tim0_1_2 = tim1_0_0 - tim1_1_0;
	  }
	  c_re(inout[0]) = tre0_0_0 + tre0_0_1 + tre0_0_2;
	  c_im(inout[0]) = tim0_0_0 + tim0_0_1 + tim0_0_2;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tre2_1_0;
	       tre2_0_0 = tre0_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tre0_0_1 + tre0_0_2));
	       tre2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tim0_0_2 - tim0_0_1);
	       c_re(inout[4 * stride]) = tre2_0_0 + tre2_1_0;
	       c_re(inout[2 * stride]) = tre2_0_0 - tre2_1_0;
	  }
	  {
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tim2_1_0;
	       tim2_0_0 = tim0_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tim0_0_1 + tim0_0_2));
	       tim2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tre0_0_1 - tre0_0_2);
	       c_im(inout[4 * stride]) = tim2_0_0 + tim2_1_0;
	       c_im(inout[2 * stride]) = tim2_0_0 - tim2_1_0;
	  }
	  c_re(inout[3 * stride]) = tre0_1_0 + tre0_1_1 + tre0_1_2;
	  c_im(inout[3 * stride]) = tim0_1_0 + tim0_1_1 + tim0_1_2;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tre2_1_0;
	       tre2_0_0 = tre0_1_0 - (((FFTW_REAL) FFTW_K499999999) * (tre0_1_1 + tre0_1_2));
	       tre2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tim0_1_2 - tim0_1_1);
	       c_re(inout[stride]) = tre2_0_0 + tre2_1_0;
	       c_re(inout[5 * stride]) = tre2_0_0 - tre2_1_0;
	  }
	  {
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tim2_1_0;
	       tim2_0_0 = tim0_1_0 - (((FFTW_REAL) FFTW_K499999999) * (tim0_1_1 + tim0_1_2));
	       tim2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tre0_1_1 - tre0_1_2);
	       c_im(inout[stride]) = tim2_0_0 + tim2_1_0;
	       c_im(inout[5 * stride]) = tim2_0_0 - tim2_1_0;
	  }
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 1054 FP additions and 500 FP multiplications */

void fftwi_twiddle_64(FFTW_COMPLEX *A, const FFTW_COMPLEX *W, int stride, int m, int dist)
{
     int i;
     COMPLEX *inout;
     inout = A;
     for (i = 0; i < m; i = i + 1, inout = inout + dist, W = W + 63) {
	  FFTW_REAL tre0_0_0;
	  FFTW_REAL tim0_0_0;
	  FFTW_REAL tre0_0_1;
	  FFTW_REAL tim0_0_1;
	  FFTW_REAL tre0_0_2;
	  FFTW_REAL tim0_0_2;
	  FFTW_REAL tre0_0_3;
	  FFTW_REAL tim0_0_3;
	  FFTW_REAL tre0_0_4;
	  FFTW_REAL tim0_0_4;
	  FFTW_REAL tre0_0_5;
	  FFTW_REAL tim0_0_5;
	  FFTW_REAL tre0_0_6;
	  FFTW_REAL tim0_0_6;
	  FFTW_REAL tre0_0_7;
	  FFTW_REAL tim0_0_7;
	  FFTW_REAL tre0_1_0;
	  FFTW_REAL tim0_1_0;
	  FFTW_REAL tre0_1_1;
	  FFTW_REAL tim0_1_1;
	  FFTW_REAL tre0_1_2;
	  FFTW_REAL tim0_1_2;
	  FFTW_REAL tre0_1_3;
	  FFTW_REAL tim0_1_3;
	  FFTW_REAL tre0_1_4;
	  FFTW_REAL tim0_1_4;
	  FFTW_REAL tre0_1_5;
	  FFTW_REAL tim0_1_5;
	  FFTW_REAL tre0_1_6;
	  FFTW_REAL tim0_1_6;
	  FFTW_REAL tre0_1_7;
	  FFTW_REAL tim0_1_7;
	  FFTW_REAL tre0_2_0;
	  FFTW_REAL tim0_2_0;
	  FFTW_REAL tre0_2_1;
	  FFTW_REAL tim0_2_1;
	  FFTW_REAL tre0_2_2;
	  FFTW_REAL tim0_2_2;
	  FFTW_REAL tre0_2_3;
	  FFTW_REAL tim0_2_3;
	  FFTW_REAL tre0_2_4;
	  FFTW_REAL tim0_2_4;
	  FFTW_REAL tre0_2_5;
	  FFTW_REAL tim0_2_5;
	  FFTW_REAL tre0_2_6;
	  FFTW_REAL tim0_2_6;
	  FFTW_REAL tre0_2_7;
	  FFTW_REAL tim0_2_7;
	  FFTW_REAL tre0_3_0;
	  FFTW_REAL tim0_3_0;
	  FFTW_REAL tre0_3_1;
	  FFTW_REAL tim0_3_1;
	  FFTW_REAL tre0_3_2;
	  FFTW_REAL tim0_3_2;
	  FFTW_REAL tre0_3_3;
	  FFTW_REAL tim0_3_3;
	  FFTW_REAL tre0_3_4;
	  FFTW_REAL tim0_3_4;
	  FFTW_REAL tre0_3_5;
	  FFTW_REAL tim0_3_5;
	  FFTW_REAL tre0_3_6;
	  FFTW_REAL tim0_3_6;
	  FFTW_REAL tre0_3_7;
	  FFTW_REAL tim0_3_7;
	  FFTW_REAL tre0_4_0;
	  FFTW_REAL tim0_4_0;
	  FFTW_REAL tre0_4_1;
	  FFTW_REAL tim0_4_1;
	  FFTW_REAL tre0_4_2;
	  FFTW_REAL tim0_4_2;
	  FFTW_REAL tre0_4_3;
	  FFTW_REAL tim0_4_3;
	  FFTW_REAL tre0_4_4;
	  FFTW_REAL tim0_4_4;
	  FFTW_REAL tre0_4_5;
	  FFTW_REAL tim0_4_5;
	  FFTW_REAL tre0_4_6;
	  FFTW_REAL tim0_4_6;
	  FFTW_REAL tre0_4_7;
	  FFTW_REAL tim0_4_7;
	  FFTW_REAL tre0_5_0;
	  FFTW_REAL tim0_5_0;
	  FFTW_REAL tre0_5_1;
	  FFTW_REAL tim0_5_1;
	  FFTW_REAL tre0_5_2;
	  FFTW_REAL tim0_5_2;
	  FFTW_REAL tre0_5_3;
	  FFTW_REAL tim0_5_3;
	  FFTW_REAL tre0_5_4;
	  FFTW_REAL tim0_5_4;
	  FFTW_REAL tre0_5_5;
	  FFTW_REAL tim0_5_5;
	  FFTW_REAL tre0_5_6;
	  FFTW_REAL tim0_5_6;
	  FFTW_REAL tre0_5_7;
	  FFTW_REAL tim0_5_7;
	  FFTW_REAL tre0_6_0;
	  FFTW_REAL tim0_6_0;
	  FFTW_REAL tre0_6_1;
	  FFTW_REAL tim0_6_1;
	  FFTW_REAL tre0_6_2;
	  FFTW_REAL tim0_6_2;
	  FFTW_REAL tre0_6_3;
	  FFTW_REAL tim0_6_3;
	  FFTW_REAL tre0_6_4;
	  FFTW_REAL tim0_6_4;
	  FFTW_REAL tre0_6_5;
	  FFTW_REAL tim0_6_5;
	  FFTW_REAL tre0_6_6;
	  FFTW_REAL tim0_6_6;
	  FFTW_REAL tre0_6_7;
	  FFTW_REAL tim0_6_7;
	  FFTW_REAL tre0_7_0;
	  FFTW_REAL tim0_7_0;
	  FFTW_REAL tre0_7_1;
	  FFTW_REAL tim0_7_1;
	  FFTW_REAL tre0_7_2;
	  FFTW_REAL tim0_7_2;
	  FFTW_REAL tre0_7_3;
	  FFTW_REAL tim0_7_3;
	  FFTW_REAL tre0_7_4;
	  FFTW_REAL tim0_7_4;
	  FFTW_REAL tre0_7_5;
	  FFTW_REAL tim0_7_5;
	  FFTW_REAL tre0_7_6;
	  FFTW_REAL tim0_7_6;
	  FFTW_REAL tre0_7_7;
	  FFTW_REAL tim0_7_7;
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_0_2;
	       FFTW_REAL tim1_0_2;
	       FFTW_REAL tre1_0_3;
	       FFTW_REAL tim1_0_3;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       FFTW_REAL tre1_1_2;
	       FFTW_REAL tim1_1_2;
	       FFTW_REAL tre1_1_3;
	       FFTW_REAL tim1_1_3;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = c_re(inout[0]);
		    tim2_0_0 = c_im(inout[0]);
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[32 * stride]);
			 ti = c_im(inout[32 * stride]);
			 twr = c_re(W[31]);
			 twi = c_im(W[31]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_0 = tre2_0_0 + tre2_1_0;
		    tim1_0_0 = tim2_0_0 + tim2_1_0;
		    tre1_1_0 = tre2_0_0 - tre2_1_0;
		    tim1_1_0 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[8 * stride]);
			 ti = c_im(inout[8 * stride]);
			 twr = c_re(W[7]);
			 twi = c_im(W[7]);
			 tre2_0_0 = (tr * twr) + (ti * twi);
			 tim2_0_0 = (ti * twr) - (tr * twi);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[40 * stride]);
			 ti = c_im(inout[40 * stride]);
			 twr = c_re(W[39]);
			 twi = c_im(W[39]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[16 * stride]);
			 ti = c_im(inout[16 * stride]);
			 twr = c_re(W[15]);
			 twi = c_im(W[15]);
			 tre2_0_0 = (tr * twr) + (ti * twi);
			 tim2_0_0 = (ti * twr) - (tr * twi);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[48 * stride]);
			 ti = c_im(inout[48 * stride]);
			 twr = c_re(W[47]);
			 twi = c_im(W[47]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_2 = tre2_0_0 + tre2_1_0;
		    tim1_0_2 = tim2_0_0 + tim2_1_0;
		    tre1_1_2 = tre2_0_0 - tre2_1_0;
		    tim1_1_2 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[24 * stride]);
			 ti = c_im(inout[24 * stride]);
			 twr = c_re(W[23]);
			 twi = c_im(W[23]);
			 tre2_0_0 = (tr * twr) + (ti * twi);
			 tim2_0_0 = (ti * twr) - (tr * twi);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[56 * stride]);
			 ti = c_im(inout[56 * stride]);
			 twr = c_re(W[55]);
			 twi = c_im(W[55]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_3 = tre2_0_0 + tre2_1_0;
		    tim1_0_3 = tim2_0_0 + tim2_1_0;
		    tre1_1_3 = tre2_0_0 - tre2_1_0;
		    tim1_1_3 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_0_0 + tre1_0_2;
		    tim2_0_0 = tim1_0_0 + tim1_0_2;
		    tre2_1_0 = tre1_0_0 - tre1_0_2;
		    tim2_1_0 = tim1_0_0 - tim1_0_2;
		    tre2_0_1 = tre1_0_1 + tre1_0_3;
		    tim2_0_1 = tim1_0_1 + tim1_0_3;
		    tre2_1_1 = tre1_0_1 - tre1_0_3;
		    tim2_1_1 = tim1_0_1 - tim1_0_3;
		    tre0_0_0 = tre2_0_0 + tre2_0_1;
		    tim0_0_0 = tim2_0_0 + tim2_0_1;
		    tre0_4_0 = tre2_0_0 - tre2_0_1;
		    tim0_4_0 = tim2_0_0 - tim2_0_1;
		    tre0_2_0 = tre2_1_0 - tim2_1_1;
		    tim0_2_0 = tim2_1_0 + tre2_1_1;
		    tre0_6_0 = tre2_1_0 + tim2_1_1;
		    tim0_6_0 = tim2_1_0 - tre2_1_1;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_1_0 - tim1_1_2;
		    tim2_0_0 = tim1_1_0 + tre1_1_2;
		    tre2_1_0 = tre1_1_0 + tim1_1_2;
		    tim2_1_0 = tim1_1_0 - tre1_1_2;
		    {
			 FFTW_REAL tre3_0_0;
			 FFTW_REAL tim3_0_0;
			 FFTW_REAL tre3_1_0;
			 FFTW_REAL tim3_1_0;
			 tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 - tim1_1_1);
			 tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 + tre1_1_1);
			 tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 + tim1_1_3);
			 tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 - tim1_1_3);
			 tre2_0_1 = tre3_0_0 - tre3_1_0;
			 tim2_0_1 = tim3_0_0 + tim3_1_0;
			 tre2_1_1 = tre3_0_0 + tre3_1_0;
			 tim2_1_1 = tim3_0_0 - tim3_1_0;
		    }
		    tre0_1_0 = tre2_0_0 + tre2_0_1;
		    tim0_1_0 = tim2_0_0 + tim2_0_1;
		    tre0_5_0 = tre2_0_0 - tre2_0_1;
		    tim0_5_0 = tim2_0_0 - tim2_0_1;
		    tre0_3_0 = tre2_1_0 - tim2_1_1;
		    tim0_3_0 = tim2_1_0 + tre2_1_1;
		    tre0_7_0 = tre2_1_0 + tim2_1_1;
		    tim0_7_0 = tim2_1_0 - tre2_1_1;
	       }
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_0_2;
	       FFTW_REAL tim1_0_2;
	       FFTW_REAL tre1_0_3;
	       FFTW_REAL tim1_0_3;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       FFTW_REAL tre1_1_2;
	       FFTW_REAL tim1_1_2;
	       FFTW_REAL tre1_1_3;
	       FFTW_REAL tim1_1_3;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[stride]);
			 ti = c_im(inout[stride]);
			 twr = c_re(W[0]);
			 twi = c_im(W[0]);
			 tre2_0_0 = (tr * twr) + (ti * twi);
			 tim2_0_0 = (ti * twr) - (tr * twi);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[33 * stride]);
			 ti = c_im(inout[33 * stride]);
			 twr = c_re(W[32]);
			 twi = c_im(W[32]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_0 = tre2_0_0 + tre2_1_0;
		    tim1_0_0 = tim2_0_0 + tim2_1_0;
		    tre1_1_0 = tre2_0_0 - tre2_1_0;
		    tim1_1_0 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[9 * stride]);
			 ti = c_im(inout[9 * stride]);
			 twr = c_re(W[8]);
			 twi = c_im(W[8]);
			 tre2_0_0 = (tr * twr) + (ti * twi);
			 tim2_0_0 = (ti * twr) - (tr * twi);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[41 * stride]);
			 ti = c_im(inout[41 * stride]);
			 twr = c_re(W[40]);
			 twi = c_im(W[40]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[17 * stride]);
			 ti = c_im(inout[17 * stride]);
			 twr = c_re(W[16]);
			 twi = c_im(W[16]);
			 tre2_0_0 = (tr * twr) + (ti * twi);
			 tim2_0_0 = (ti * twr) - (tr * twi);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[49 * stride]);
			 ti = c_im(inout[49 * stride]);
			 twr = c_re(W[48]);
			 twi = c_im(W[48]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_2 = tre2_0_0 + tre2_1_0;
		    tim1_0_2 = tim2_0_0 + tim2_1_0;
		    tre1_1_2 = tre2_0_0 - tre2_1_0;
		    tim1_1_2 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[25 * stride]);
			 ti = c_im(inout[25 * stride]);
			 twr = c_re(W[24]);
			 twi = c_im(W[24]);
			 tre2_0_0 = (tr * twr) + (ti * twi);
			 tim2_0_0 = (ti * twr) - (tr * twi);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[57 * stride]);
			 ti = c_im(inout[57 * stride]);
			 twr = c_re(W[56]);
			 twi = c_im(W[56]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_3 = tre2_0_0 + tre2_1_0;
		    tim1_0_3 = tim2_0_0 + tim2_1_0;
		    tre1_1_3 = tre2_0_0 - tre2_1_0;
		    tim1_1_3 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_0_0 + tre1_0_2;
		    tim2_0_0 = tim1_0_0 + tim1_0_2;
		    tre2_1_0 = tre1_0_0 - tre1_0_2;
		    tim2_1_0 = tim1_0_0 - tim1_0_2;
		    tre2_0_1 = tre1_0_1 + tre1_0_3;
		    tim2_0_1 = tim1_0_1 + tim1_0_3;
		    tre2_1_1 = tre1_0_1 - tre1_0_3;
		    tim2_1_1 = tim1_0_1 - tim1_0_3;
		    tre0_0_1 = tre2_0_0 + tre2_0_1;
		    tim0_0_1 = tim2_0_0 + tim2_0_1;
		    tre0_4_1 = tre2_0_0 - tre2_0_1;
		    tim0_4_1 = tim2_0_0 - tim2_0_1;
		    tre0_2_1 = tre2_1_0 - tim2_1_1;
		    tim0_2_1 = tim2_1_0 + tre2_1_1;
		    tre0_6_1 = tre2_1_0 + tim2_1_1;
		    tim0_6_1 = tim2_1_0 - tre2_1_1;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_1_0 - tim1_1_2;
		    tim2_0_0 = tim1_1_0 + tre1_1_2;
		    tre2_1_0 = tre1_1_0 + tim1_1_2;
		    tim2_1_0 = tim1_1_0 - tre1_1_2;
		    {
			 FFTW_REAL tre3_0_0;
			 FFTW_REAL tim3_0_0;
			 FFTW_REAL tre3_1_0;
			 FFTW_REAL tim3_1_0;
			 tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 - tim1_1_1);
			 tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 + tre1_1_1);
			 tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 + tim1_1_3);
			 tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 - tim1_1_3);
			 tre2_0_1 = tre3_0_0 - tre3_1_0;
			 tim2_0_1 = tim3_0_0 + tim3_1_0;
			 tre2_1_1 = tre3_0_0 + tre3_1_0;
			 tim2_1_1 = tim3_0_0 - tim3_1_0;
		    }
		    tre0_1_1 = tre2_0_0 + tre2_0_1;
		    tim0_1_1 = tim2_0_0 + tim2_0_1;
		    tre0_5_1 = tre2_0_0 - tre2_0_1;
		    tim0_5_1 = tim2_0_0 - tim2_0_1;
		    tre0_3_1 = tre2_1_0 - tim2_1_1;
		    tim0_3_1 = tim2_1_0 + tre2_1_1;
		    tre0_7_1 = tre2_1_0 + tim2_1_1;
		    tim0_7_1 = tim2_1_0 - tre2_1_1;
	       }
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_0_2;
	       FFTW_REAL tim1_0_2;
	       FFTW_REAL tre1_0_3;
	       FFTW_REAL tim1_0_3;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       FFTW_REAL tre1_1_2;
	       FFTW_REAL tim1_1_2;
	       FFTW_REAL tre1_1_3;
	       FFTW_REAL tim1_1_3;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[2 * stride]);
			 ti = c_im(inout[2 * stride]);
			 twr = c_re(W[1]);
			 twi = c_im(W[1]);
			 tre2_0_0 = (tr * twr) + (ti * twi);
			 tim2_0_0 = (ti * twr) - (tr * twi);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[34 * stride]);
			 ti = c_im(inout[34 * stride]);
			 twr = c_re(W[33]);
			 twi = c_im(W[33]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_0 = tre2_0_0 + tre2_1_0;
		    tim1_0_0 = tim2_0_0 + tim2_1_0;
		    tre1_1_0 = tre2_0_0 - tre2_1_0;
		    tim1_1_0 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[10 * stride]);
			 ti = c_im(inout[10 * stride]);
			 twr = c_re(W[9]);
			 twi = c_im(W[9]);
			 tre2_0_0 = (tr * twr) + (ti * twi);
			 tim2_0_0 = (ti * twr) - (tr * twi);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[42 * stride]);
			 ti = c_im(inout[42 * stride]);
			 twr = c_re(W[41]);
			 twi = c_im(W[41]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[18 * stride]);
			 ti = c_im(inout[18 * stride]);
			 twr = c_re(W[17]);
			 twi = c_im(W[17]);
			 tre2_0_0 = (tr * twr) + (ti * twi);
			 tim2_0_0 = (ti * twr) - (tr * twi);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[50 * stride]);
			 ti = c_im(inout[50 * stride]);
			 twr = c_re(W[49]);
			 twi = c_im(W[49]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_2 = tre2_0_0 + tre2_1_0;
		    tim1_0_2 = tim2_0_0 + tim2_1_0;
		    tre1_1_2 = tre2_0_0 - tre2_1_0;
		    tim1_1_2 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[26 * stride]);
			 ti = c_im(inout[26 * stride]);
			 twr = c_re(W[25]);
			 twi = c_im(W[25]);
			 tre2_0_0 = (tr * twr) + (ti * twi);
			 tim2_0_0 = (ti * twr) - (tr * twi);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[58 * stride]);
			 ti = c_im(inout[58 * stride]);
			 twr = c_re(W[57]);
			 twi = c_im(W[57]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_3 = tre2_0_0 + tre2_1_0;
		    tim1_0_3 = tim2_0_0 + tim2_1_0;
		    tre1_1_3 = tre2_0_0 - tre2_1_0;
		    tim1_1_3 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_0_0 + tre1_0_2;
		    tim2_0_0 = tim1_0_0 + tim1_0_2;
		    tre2_1_0 = tre1_0_0 - tre1_0_2;
		    tim2_1_0 = tim1_0_0 - tim1_0_2;
		    tre2_0_1 = tre1_0_1 + tre1_0_3;
		    tim2_0_1 = tim1_0_1 + tim1_0_3;
		    tre2_1_1 = tre1_0_1 - tre1_0_3;
		    tim2_1_1 = tim1_0_1 - tim1_0_3;
		    tre0_0_2 = tre2_0_0 + tre2_0_1;
		    tim0_0_2 = tim2_0_0 + tim2_0_1;
		    tre0_4_2 = tre2_0_0 - tre2_0_1;
		    tim0_4_2 = tim2_0_0 - tim2_0_1;
		    tre0_2_2 = tre2_1_0 - tim2_1_1;
		    tim0_2_2 = tim2_1_0 + tre2_1_1;
		    tre0_6_2 = tre2_1_0 + tim2_1_1;
		    tim0_6_2 = tim2_1_0 - tre2_1_1;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_1_0 - tim1_1_2;
		    tim2_0_0 = tim1_1_0 + tre1_1_2;
		    tre2_1_0 = tre1_1_0 + tim1_1_2;
		    tim2_1_0 = tim1_1_0 - tre1_1_2;
		    {
			 FFTW_REAL tre3_0_0;
			 FFTW_REAL tim3_0_0;
			 FFTW_REAL tre3_1_0;
			 FFTW_REAL tim3_1_0;
			 tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 - tim1_1_1);
			 tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 + tre1_1_1);
			 tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 + tim1_1_3);
			 tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 - tim1_1_3);
			 tre2_0_1 = tre3_0_0 - tre3_1_0;
			 tim2_0_1 = tim3_0_0 + tim3_1_0;
			 tre2_1_1 = tre3_0_0 + tre3_1_0;
			 tim2_1_1 = tim3_0_0 - tim3_1_0;
		    }
		    tre0_1_2 = tre2_0_0 + tre2_0_1;
		    tim0_1_2 = tim2_0_0 + tim2_0_1;
		    tre0_5_2 = tre2_0_0 - tre2_0_1;
		    tim0_5_2 = tim2_0_0 - tim2_0_1;
		    tre0_3_2 = tre2_1_0 - tim2_1_1;
		    tim0_3_2 = tim2_1_0 + tre2_1_1;
		    tre0_7_2 = tre2_1_0 + tim2_1_1;
		    tim0_7_2 = tim2_1_0 - tre2_1_1;
	       }
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_0_2;
	       FFTW_REAL tim1_0_2;
	       FFTW_REAL tre1_0_3;
	       FFTW_REAL tim1_0_3;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       FFTW_REAL tre1_1_2;
	       FFTW_REAL tim1_1_2;
	       FFTW_REAL tre1_1_3;
	       FFTW_REAL tim1_1_3;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[3 * stride]);
			 ti = c_im(inout[3 * stride]);
			 twr = c_re(W[2]);
			 twi = c_im(W[2]);
			 tre2_0_0 = (tr * twr) + (ti * twi);
			 tim2_0_0 = (ti * twr) - (tr * twi);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[35 * stride]);
			 ti = c_im(inout[35 * stride]);
			 twr = c_re(W[34]);
			 twi = c_im(W[34]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_0 = tre2_0_0 + tre2_1_0;
		    tim1_0_0 = tim2_0_0 + tim2_1_0;
		    tre1_1_0 = tre2_0_0 - tre2_1_0;
		    tim1_1_0 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[11 * stride]);
			 ti = c_im(inout[11 * stride]);
			 twr = c_re(W[10]);
			 twi = c_im(W[10]);
			 tre2_0_0 = (tr * twr) + (ti * twi);
			 tim2_0_0 = (ti * twr) - (tr * twi);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[43 * stride]);
			 ti = c_im(inout[43 * stride]);
			 twr = c_re(W[42]);
			 twi = c_im(W[42]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[19 * stride]);
			 ti = c_im(inout[19 * stride]);
			 twr = c_re(W[18]);
			 twi = c_im(W[18]);
			 tre2_0_0 = (tr * twr) + (ti * twi);
			 tim2_0_0 = (ti * twr) - (tr * twi);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[51 * stride]);
			 ti = c_im(inout[51 * stride]);
			 twr = c_re(W[50]);
			 twi = c_im(W[50]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_2 = tre2_0_0 + tre2_1_0;
		    tim1_0_2 = tim2_0_0 + tim2_1_0;
		    tre1_1_2 = tre2_0_0 - tre2_1_0;
		    tim1_1_2 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[27 * stride]);
			 ti = c_im(inout[27 * stride]);
			 twr = c_re(W[26]);
			 twi = c_im(W[26]);
			 tre2_0_0 = (tr * twr) + (ti * twi);
			 tim2_0_0 = (ti * twr) - (tr * twi);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[59 * stride]);
			 ti = c_im(inout[59 * stride]);
			 twr = c_re(W[58]);
			 twi = c_im(W[58]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_3 = tre2_0_0 + tre2_1_0;
		    tim1_0_3 = tim2_0_0 + tim2_1_0;
		    tre1_1_3 = tre2_0_0 - tre2_1_0;
		    tim1_1_3 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_0_0 + tre1_0_2;
		    tim2_0_0 = tim1_0_0 + tim1_0_2;
		    tre2_1_0 = tre1_0_0 - tre1_0_2;
		    tim2_1_0 = tim1_0_0 - tim1_0_2;
		    tre2_0_1 = tre1_0_1 + tre1_0_3;
		    tim2_0_1 = tim1_0_1 + tim1_0_3;
		    tre2_1_1 = tre1_0_1 - tre1_0_3;
		    tim2_1_1 = tim1_0_1 - tim1_0_3;
		    tre0_0_3 = tre2_0_0 + tre2_0_1;
		    tim0_0_3 = tim2_0_0 + tim2_0_1;
		    tre0_4_3 = tre2_0_0 - tre2_0_1;
		    tim0_4_3 = tim2_0_0 - tim2_0_1;
		    tre0_2_3 = tre2_1_0 - tim2_1_1;
		    tim0_2_3 = tim2_1_0 + tre2_1_1;
		    tre0_6_3 = tre2_1_0 + tim2_1_1;
		    tim0_6_3 = tim2_1_0 - tre2_1_1;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_1_0 - tim1_1_2;
		    tim2_0_0 = tim1_1_0 + tre1_1_2;
		    tre2_1_0 = tre1_1_0 + tim1_1_2;
		    tim2_1_0 = tim1_1_0 - tre1_1_2;
		    {
			 FFTW_REAL tre3_0_0;
			 FFTW_REAL tim3_0_0;
			 FFTW_REAL tre3_1_0;
			 FFTW_REAL tim3_1_0;
			 tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 - tim1_1_1);
			 tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 + tre1_1_1);
			 tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 + tim1_1_3);
			 tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 - tim1_1_3);
			 tre2_0_1 = tre3_0_0 - tre3_1_0;
			 tim2_0_1 = tim3_0_0 + tim3_1_0;
			 tre2_1_1 = tre3_0_0 + tre3_1_0;
			 tim2_1_1 = tim3_0_0 - tim3_1_0;
		    }
		    tre0_1_3 = tre2_0_0 + tre2_0_1;
		    tim0_1_3 = tim2_0_0 + tim2_0_1;
		    tre0_5_3 = tre2_0_0 - tre2_0_1;
		    tim0_5_3 = tim2_0_0 - tim2_0_1;
		    tre0_3_3 = tre2_1_0 - tim2_1_1;
		    tim0_3_3 = tim2_1_0 + tre2_1_1;
		    tre0_7_3 = tre2_1_0 + tim2_1_1;
		    tim0_7_3 = tim2_1_0 - tre2_1_1;
	       }
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_0_2;
	       FFTW_REAL tim1_0_2;
	       FFTW_REAL tre1_0_3;
	       FFTW_REAL tim1_0_3;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       FFTW_REAL tre1_1_2;
	       FFTW_REAL tim1_1_2;
	       FFTW_REAL tre1_1_3;
	       FFTW_REAL tim1_1_3;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[4 * stride]);
			 ti = c_im(inout[4 * stride]);
			 twr = c_re(W[3]);
			 twi = c_im(W[3]);
			 tre2_0_0 = (tr * twr) + (ti * twi);
			 tim2_0_0 = (ti * twr) - (tr * twi);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[36 * stride]);
			 ti = c_im(inout[36 * stride]);
			 twr = c_re(W[35]);
			 twi = c_im(W[35]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_0 = tre2_0_0 + tre2_1_0;
		    tim1_0_0 = tim2_0_0 + tim2_1_0;
		    tre1_1_0 = tre2_0_0 - tre2_1_0;
		    tim1_1_0 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[12 * stride]);
			 ti = c_im(inout[12 * stride]);
			 twr = c_re(W[11]);
			 twi = c_im(W[11]);
			 tre2_0_0 = (tr * twr) + (ti * twi);
			 tim2_0_0 = (ti * twr) - (tr * twi);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[44 * stride]);
			 ti = c_im(inout[44 * stride]);
			 twr = c_re(W[43]);
			 twi = c_im(W[43]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[20 * stride]);
			 ti = c_im(inout[20 * stride]);
			 twr = c_re(W[19]);
			 twi = c_im(W[19]);
			 tre2_0_0 = (tr * twr) + (ti * twi);
			 tim2_0_0 = (ti * twr) - (tr * twi);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[52 * stride]);
			 ti = c_im(inout[52 * stride]);
			 twr = c_re(W[51]);
			 twi = c_im(W[51]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_2 = tre2_0_0 + tre2_1_0;
		    tim1_0_2 = tim2_0_0 + tim2_1_0;
		    tre1_1_2 = tre2_0_0 - tre2_1_0;
		    tim1_1_2 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[28 * stride]);
			 ti = c_im(inout[28 * stride]);
			 twr = c_re(W[27]);
			 twi = c_im(W[27]);
			 tre2_0_0 = (tr * twr) + (ti * twi);
			 tim2_0_0 = (ti * twr) - (tr * twi);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[60 * stride]);
			 ti = c_im(inout[60 * stride]);
			 twr = c_re(W[59]);
			 twi = c_im(W[59]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_3 = tre2_0_0 + tre2_1_0;
		    tim1_0_3 = tim2_0_0 + tim2_1_0;
		    tre1_1_3 = tre2_0_0 - tre2_1_0;
		    tim1_1_3 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_0_0 + tre1_0_2;
		    tim2_0_0 = tim1_0_0 + tim1_0_2;
		    tre2_1_0 = tre1_0_0 - tre1_0_2;
		    tim2_1_0 = tim1_0_0 - tim1_0_2;
		    tre2_0_1 = tre1_0_1 + tre1_0_3;
		    tim2_0_1 = tim1_0_1 + tim1_0_3;
		    tre2_1_1 = tre1_0_1 - tre1_0_3;
		    tim2_1_1 = tim1_0_1 - tim1_0_3;
		    tre0_0_4 = tre2_0_0 + tre2_0_1;
		    tim0_0_4 = tim2_0_0 + tim2_0_1;
		    tre0_4_4 = tre2_0_0 - tre2_0_1;
		    tim0_4_4 = tim2_0_0 - tim2_0_1;
		    tre0_2_4 = tre2_1_0 - tim2_1_1;
		    tim0_2_4 = tim2_1_0 + tre2_1_1;
		    tre0_6_4 = tre2_1_0 + tim2_1_1;
		    tim0_6_4 = tim2_1_0 - tre2_1_1;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_1_0 - tim1_1_2;
		    tim2_0_0 = tim1_1_0 + tre1_1_2;
		    tre2_1_0 = tre1_1_0 + tim1_1_2;
		    tim2_1_0 = tim1_1_0 - tre1_1_2;
		    {
			 FFTW_REAL tre3_0_0;
			 FFTW_REAL tim3_0_0;
			 FFTW_REAL tre3_1_0;
			 FFTW_REAL tim3_1_0;
			 tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 - tim1_1_1);
			 tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 + tre1_1_1);
			 tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 + tim1_1_3);
			 tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 - tim1_1_3);
			 tre2_0_1 = tre3_0_0 - tre3_1_0;
			 tim2_0_1 = tim3_0_0 + tim3_1_0;
			 tre2_1_1 = tre3_0_0 + tre3_1_0;
			 tim2_1_1 = tim3_0_0 - tim3_1_0;
		    }
		    tre0_1_4 = tre2_0_0 + tre2_0_1;
		    tim0_1_4 = tim2_0_0 + tim2_0_1;
		    tre0_5_4 = tre2_0_0 - tre2_0_1;
		    tim0_5_4 = tim2_0_0 - tim2_0_1;
		    tre0_3_4 = tre2_1_0 - tim2_1_1;
		    tim0_3_4 = tim2_1_0 + tre2_1_1;
		    tre0_7_4 = tre2_1_0 + tim2_1_1;
		    tim0_7_4 = tim2_1_0 - tre2_1_1;
	       }
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_0_2;
	       FFTW_REAL tim1_0_2;
	       FFTW_REAL tre1_0_3;
	       FFTW_REAL tim1_0_3;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       FFTW_REAL tre1_1_2;
	       FFTW_REAL tim1_1_2;
	       FFTW_REAL tre1_1_3;
	       FFTW_REAL tim1_1_3;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[5 * stride]);
			 ti = c_im(inout[5 * stride]);
			 twr = c_re(W[4]);
			 twi = c_im(W[4]);
			 tre2_0_0 = (tr * twr) + (ti * twi);
			 tim2_0_0 = (ti * twr) - (tr * twi);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[37 * stride]);
			 ti = c_im(inout[37 * stride]);
			 twr = c_re(W[36]);
			 twi = c_im(W[36]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_0 = tre2_0_0 + tre2_1_0;
		    tim1_0_0 = tim2_0_0 + tim2_1_0;
		    tre1_1_0 = tre2_0_0 - tre2_1_0;
		    tim1_1_0 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[13 * stride]);
			 ti = c_im(inout[13 * stride]);
			 twr = c_re(W[12]);
			 twi = c_im(W[12]);
			 tre2_0_0 = (tr * twr) + (ti * twi);
			 tim2_0_0 = (ti * twr) - (tr * twi);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[45 * stride]);
			 ti = c_im(inout[45 * stride]);
			 twr = c_re(W[44]);
			 twi = c_im(W[44]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[21 * stride]);
			 ti = c_im(inout[21 * stride]);
			 twr = c_re(W[20]);
			 twi = c_im(W[20]);
			 tre2_0_0 = (tr * twr) + (ti * twi);
			 tim2_0_0 = (ti * twr) - (tr * twi);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[53 * stride]);
			 ti = c_im(inout[53 * stride]);
			 twr = c_re(W[52]);
			 twi = c_im(W[52]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_2 = tre2_0_0 + tre2_1_0;
		    tim1_0_2 = tim2_0_0 + tim2_1_0;
		    tre1_1_2 = tre2_0_0 - tre2_1_0;
		    tim1_1_2 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[29 * stride]);
			 ti = c_im(inout[29 * stride]);
			 twr = c_re(W[28]);
			 twi = c_im(W[28]);
			 tre2_0_0 = (tr * twr) + (ti * twi);
			 tim2_0_0 = (ti * twr) - (tr * twi);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[61 * stride]);
			 ti = c_im(inout[61 * stride]);
			 twr = c_re(W[60]);
			 twi = c_im(W[60]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_3 = tre2_0_0 + tre2_1_0;
		    tim1_0_3 = tim2_0_0 + tim2_1_0;
		    tre1_1_3 = tre2_0_0 - tre2_1_0;
		    tim1_1_3 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_0_0 + tre1_0_2;
		    tim2_0_0 = tim1_0_0 + tim1_0_2;
		    tre2_1_0 = tre1_0_0 - tre1_0_2;
		    tim2_1_0 = tim1_0_0 - tim1_0_2;
		    tre2_0_1 = tre1_0_1 + tre1_0_3;
		    tim2_0_1 = tim1_0_1 + tim1_0_3;
		    tre2_1_1 = tre1_0_1 - tre1_0_3;
		    tim2_1_1 = tim1_0_1 - tim1_0_3;
		    tre0_0_5 = tre2_0_0 + tre2_0_1;
		    tim0_0_5 = tim2_0_0 + tim2_0_1;
		    tre0_4_5 = tre2_0_0 - tre2_0_1;
		    tim0_4_5 = tim2_0_0 - tim2_0_1;
		    tre0_2_5 = tre2_1_0 - tim2_1_1;
		    tim0_2_5 = tim2_1_0 + tre2_1_1;
		    tre0_6_5 = tre2_1_0 + tim2_1_1;
		    tim0_6_5 = tim2_1_0 - tre2_1_1;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_1_0 - tim1_1_2;
		    tim2_0_0 = tim1_1_0 + tre1_1_2;
		    tre2_1_0 = tre1_1_0 + tim1_1_2;
		    tim2_1_0 = tim1_1_0 - tre1_1_2;
		    {
			 FFTW_REAL tre3_0_0;
			 FFTW_REAL tim3_0_0;
			 FFTW_REAL tre3_1_0;
			 FFTW_REAL tim3_1_0;
			 tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 - tim1_1_1);
			 tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 + tre1_1_1);
			 tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 + tim1_1_3);
			 tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 - tim1_1_3);
			 tre2_0_1 = tre3_0_0 - tre3_1_0;
			 tim2_0_1 = tim3_0_0 + tim3_1_0;
			 tre2_1_1 = tre3_0_0 + tre3_1_0;
			 tim2_1_1 = tim3_0_0 - tim3_1_0;
		    }
		    tre0_1_5 = tre2_0_0 + tre2_0_1;
		    tim0_1_5 = tim2_0_0 + tim2_0_1;
		    tre0_5_5 = tre2_0_0 - tre2_0_1;
		    tim0_5_5 = tim2_0_0 - tim2_0_1;
		    tre0_3_5 = tre2_1_0 - tim2_1_1;
		    tim0_3_5 = tim2_1_0 + tre2_1_1;
		    tre0_7_5 = tre2_1_0 + tim2_1_1;
		    tim0_7_5 = tim2_1_0 - tre2_1_1;
	       }
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_0_2;
	       FFTW_REAL tim1_0_2;
	       FFTW_REAL tre1_0_3;
	       FFTW_REAL tim1_0_3;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       FFTW_REAL tre1_1_2;
	       FFTW_REAL tim1_1_2;
	       FFTW_REAL tre1_1_3;
	       FFTW_REAL tim1_1_3;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[6 * stride]);
			 ti = c_im(inout[6 * stride]);
			 twr = c_re(W[5]);
			 twi = c_im(W[5]);
			 tre2_0_0 = (tr * twr) + (ti * twi);
			 tim2_0_0 = (ti * twr) - (tr * twi);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[38 * stride]);
			 ti = c_im(inout[38 * stride]);
			 twr = c_re(W[37]);
			 twi = c_im(W[37]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_0 = tre2_0_0 + tre2_1_0;
		    tim1_0_0 = tim2_0_0 + tim2_1_0;
		    tre1_1_0 = tre2_0_0 - tre2_1_0;
		    tim1_1_0 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[14 * stride]);
			 ti = c_im(inout[14 * stride]);
			 twr = c_re(W[13]);
			 twi = c_im(W[13]);
			 tre2_0_0 = (tr * twr) + (ti * twi);
			 tim2_0_0 = (ti * twr) - (tr * twi);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[46 * stride]);
			 ti = c_im(inout[46 * stride]);
			 twr = c_re(W[45]);
			 twi = c_im(W[45]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[22 * stride]);
			 ti = c_im(inout[22 * stride]);
			 twr = c_re(W[21]);
			 twi = c_im(W[21]);
			 tre2_0_0 = (tr * twr) + (ti * twi);
			 tim2_0_0 = (ti * twr) - (tr * twi);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[54 * stride]);
			 ti = c_im(inout[54 * stride]);
			 twr = c_re(W[53]);
			 twi = c_im(W[53]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_2 = tre2_0_0 + tre2_1_0;
		    tim1_0_2 = tim2_0_0 + tim2_1_0;
		    tre1_1_2 = tre2_0_0 - tre2_1_0;
		    tim1_1_2 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[30 * stride]);
			 ti = c_im(inout[30 * stride]);
			 twr = c_re(W[29]);
			 twi = c_im(W[29]);
			 tre2_0_0 = (tr * twr) + (ti * twi);
			 tim2_0_0 = (ti * twr) - (tr * twi);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[62 * stride]);
			 ti = c_im(inout[62 * stride]);
			 twr = c_re(W[61]);
			 twi = c_im(W[61]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_3 = tre2_0_0 + tre2_1_0;
		    tim1_0_3 = tim2_0_0 + tim2_1_0;
		    tre1_1_3 = tre2_0_0 - tre2_1_0;
		    tim1_1_3 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_0_0 + tre1_0_2;
		    tim2_0_0 = tim1_0_0 + tim1_0_2;
		    tre2_1_0 = tre1_0_0 - tre1_0_2;
		    tim2_1_0 = tim1_0_0 - tim1_0_2;
		    tre2_0_1 = tre1_0_1 + tre1_0_3;
		    tim2_0_1 = tim1_0_1 + tim1_0_3;
		    tre2_1_1 = tre1_0_1 - tre1_0_3;
		    tim2_1_1 = tim1_0_1 - tim1_0_3;
		    tre0_0_6 = tre2_0_0 + tre2_0_1;
		    tim0_0_6 = tim2_0_0 + tim2_0_1;
		    tre0_4_6 = tre2_0_0 - tre2_0_1;
		    tim0_4_6 = tim2_0_0 - tim2_0_1;
		    tre0_2_6 = tre2_1_0 - tim2_1_1;
		    tim0_2_6 = tim2_1_0 + tre2_1_1;
		    tre0_6_6 = tre2_1_0 + tim2_1_1;
		    tim0_6_6 = tim2_1_0 - tre2_1_1;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_1_0 - tim1_1_2;
		    tim2_0_0 = tim1_1_0 + tre1_1_2;
		    tre2_1_0 = tre1_1_0 + tim1_1_2;
		    tim2_1_0 = tim1_1_0 - tre1_1_2;
		    {
			 FFTW_REAL tre3_0_0;
			 FFTW_REAL tim3_0_0;
			 FFTW_REAL tre3_1_0;
			 FFTW_REAL tim3_1_0;
			 tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 - tim1_1_1);
			 tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 + tre1_1_1);
			 tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 + tim1_1_3);
			 tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 - tim1_1_3);
			 tre2_0_1 = tre3_0_0 - tre3_1_0;
			 tim2_0_1 = tim3_0_0 + tim3_1_0;
			 tre2_1_1 = tre3_0_0 + tre3_1_0;
			 tim2_1_1 = tim3_0_0 - tim3_1_0;
		    }
		    tre0_1_6 = tre2_0_0 + tre2_0_1;
		    tim0_1_6 = tim2_0_0 + tim2_0_1;
		    tre0_5_6 = tre2_0_0 - tre2_0_1;
		    tim0_5_6 = tim2_0_0 - tim2_0_1;
		    tre0_3_6 = tre2_1_0 - tim2_1_1;
		    tim0_3_6 = tim2_1_0 + tre2_1_1;
		    tre0_7_6 = tre2_1_0 + tim2_1_1;
		    tim0_7_6 = tim2_1_0 - tre2_1_1;
	       }
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_0_2;
	       FFTW_REAL tim1_0_2;
	       FFTW_REAL tre1_0_3;
	       FFTW_REAL tim1_0_3;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       FFTW_REAL tre1_1_2;
	       FFTW_REAL tim1_1_2;
	       FFTW_REAL tre1_1_3;
	       FFTW_REAL tim1_1_3;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[7 * stride]);
			 ti = c_im(inout[7 * stride]);
			 twr = c_re(W[6]);
			 twi = c_im(W[6]);
			 tre2_0_0 = (tr * twr) + (ti * twi);
			 tim2_0_0 = (ti * twr) - (tr * twi);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[39 * stride]);
			 ti = c_im(inout[39 * stride]);
			 twr = c_re(W[38]);
			 twi = c_im(W[38]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_0 = tre2_0_0 + tre2_1_0;
		    tim1_0_0 = tim2_0_0 + tim2_1_0;
		    tre1_1_0 = tre2_0_0 - tre2_1_0;
		    tim1_1_0 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[15 * stride]);
			 ti = c_im(inout[15 * stride]);
			 twr = c_re(W[14]);
			 twi = c_im(W[14]);
			 tre2_0_0 = (tr * twr) + (ti * twi);
			 tim2_0_0 = (ti * twr) - (tr * twi);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[47 * stride]);
			 ti = c_im(inout[47 * stride]);
			 twr = c_re(W[46]);
			 twi = c_im(W[46]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[23 * stride]);
			 ti = c_im(inout[23 * stride]);
			 twr = c_re(W[22]);
			 twi = c_im(W[22]);
			 tre2_0_0 = (tr * twr) + (ti * twi);
			 tim2_0_0 = (ti * twr) - (tr * twi);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[55 * stride]);
			 ti = c_im(inout[55 * stride]);
			 twr = c_re(W[54]);
			 twi = c_im(W[54]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_2 = tre2_0_0 + tre2_1_0;
		    tim1_0_2 = tim2_0_0 + tim2_1_0;
		    tre1_1_2 = tre2_0_0 - tre2_1_0;
		    tim1_1_2 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[31 * stride]);
			 ti = c_im(inout[31 * stride]);
			 twr = c_re(W[30]);
			 twi = c_im(W[30]);
			 tre2_0_0 = (tr * twr) + (ti * twi);
			 tim2_0_0 = (ti * twr) - (tr * twi);
		    }
		    {
			 FFTW_REAL tr;
			 FFTW_REAL ti;
			 FFTW_REAL twr;
			 FFTW_REAL twi;
			 tr = c_re(inout[63 * stride]);
			 ti = c_im(inout[63 * stride]);
			 twr = c_re(W[62]);
			 twi = c_im(W[62]);
			 tre2_1_0 = (tr * twr) + (ti * twi);
			 tim2_1_0 = (ti * twr) - (tr * twi);
		    }
		    tre1_0_3 = tre2_0_0 + tre2_1_0;
		    tim1_0_3 = tim2_0_0 + tim2_1_0;
		    tre1_1_3 = tre2_0_0 - tre2_1_0;
		    tim1_1_3 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_0_0 + tre1_0_2;
		    tim2_0_0 = tim1_0_0 + tim1_0_2;
		    tre2_1_0 = tre1_0_0 - tre1_0_2;
		    tim2_1_0 = tim1_0_0 - tim1_0_2;
		    tre2_0_1 = tre1_0_1 + tre1_0_3;
		    tim2_0_1 = tim1_0_1 + tim1_0_3;
		    tre2_1_1 = tre1_0_1 - tre1_0_3;
		    tim2_1_1 = tim1_0_1 - tim1_0_3;
		    tre0_0_7 = tre2_0_0 + tre2_0_1;
		    tim0_0_7 = tim2_0_0 + tim2_0_1;
		    tre0_4_7 = tre2_0_0 - tre2_0_1;
		    tim0_4_7 = tim2_0_0 - tim2_0_1;
		    tre0_2_7 = tre2_1_0 - tim2_1_1;
		    tim0_2_7 = tim2_1_0 + tre2_1_1;
		    tre0_6_7 = tre2_1_0 + tim2_1_1;
		    tim0_6_7 = tim2_1_0 - tre2_1_1;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_1_0 - tim1_1_2;
		    tim2_0_0 = tim1_1_0 + tre1_1_2;
		    tre2_1_0 = tre1_1_0 + tim1_1_2;
		    tim2_1_0 = tim1_1_0 - tre1_1_2;
		    {
			 FFTW_REAL tre3_0_0;
			 FFTW_REAL tim3_0_0;
			 FFTW_REAL tre3_1_0;
			 FFTW_REAL tim3_1_0;
			 tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 - tim1_1_1);
			 tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 + tre1_1_1);
			 tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 + tim1_1_3);
			 tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 - tim1_1_3);
			 tre2_0_1 = tre3_0_0 - tre3_1_0;
			 tim2_0_1 = tim3_0_0 + tim3_1_0;
			 tre2_1_1 = tre3_0_0 + tre3_1_0;
			 tim2_1_1 = tim3_0_0 - tim3_1_0;
		    }
		    tre0_1_7 = tre2_0_0 + tre2_0_1;
		    tim0_1_7 = tim2_0_0 + tim2_0_1;
		    tre0_5_7 = tre2_0_0 - tre2_0_1;
		    tim0_5_7 = tim2_0_0 - tim2_0_1;
		    tre0_3_7 = tre2_1_0 - tim2_1_1;
		    tim0_3_7 = tim2_1_0 + tre2_1_1;
		    tre0_7_7 = tre2_1_0 + tim2_1_1;
		    tim0_7_7 = tim2_1_0 - tre2_1_1;
	       }
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_0_2;
	       FFTW_REAL tim1_0_2;
	       FFTW_REAL tre1_0_3;
	       FFTW_REAL tim1_0_3;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       FFTW_REAL tre1_1_2;
	       FFTW_REAL tim1_1_2;
	       FFTW_REAL tre1_1_3;
	       FFTW_REAL tim1_1_3;
	       tre1_0_0 = tre0_0_0 + tre0_0_4;
	       tim1_0_0 = tim0_0_0 + tim0_0_4;
	       tre1_1_0 = tre0_0_0 - tre0_0_4;
	       tim1_1_0 = tim0_0_0 - tim0_0_4;
	       tre1_0_1 = tre0_0_1 + tre0_0_5;
	       tim1_0_1 = tim0_0_1 + tim0_0_5;
	       tre1_1_1 = tre0_0_1 - tre0_0_5;
	       tim1_1_1 = tim0_0_1 - tim0_0_5;
	       tre1_0_2 = tre0_0_2 + tre0_0_6;
	       tim1_0_2 = tim0_0_2 + tim0_0_6;
	       tre1_1_2 = tre0_0_2 - tre0_0_6;
	       tim1_1_2 = tim0_0_2 - tim0_0_6;
	       tre1_0_3 = tre0_0_3 + tre0_0_7;
	       tim1_0_3 = tim0_0_3 + tim0_0_7;
	       tre1_1_3 = tre0_0_3 - tre0_0_7;
	       tim1_1_3 = tim0_0_3 - tim0_0_7;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_0_0 + tre1_0_2;
		    tim2_0_0 = tim1_0_0 + tim1_0_2;
		    tre2_1_0 = tre1_0_0 - tre1_0_2;
		    tim2_1_0 = tim1_0_0 - tim1_0_2;
		    tre2_0_1 = tre1_0_1 + tre1_0_3;
		    tim2_0_1 = tim1_0_1 + tim1_0_3;
		    tre2_1_1 = tre1_0_1 - tre1_0_3;
		    tim2_1_1 = tim1_0_1 - tim1_0_3;
		    c_re(inout[0]) = tre2_0_0 + tre2_0_1;
		    c_im(inout[0]) = tim2_0_0 + tim2_0_1;
		    c_re(inout[32 * stride]) = tre2_0_0 - tre2_0_1;
		    c_im(inout[32 * stride]) = tim2_0_0 - tim2_0_1;
		    c_re(inout[16 * stride]) = tre2_1_0 - tim2_1_1;
		    c_im(inout[16 * stride]) = tim2_1_0 + tre2_1_1;
		    c_re(inout[48 * stride]) = tre2_1_0 + tim2_1_1;
		    c_im(inout[48 * stride]) = tim2_1_0 - tre2_1_1;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_1_0 - tim1_1_2;
		    tim2_0_0 = tim1_1_0 + tre1_1_2;
		    tre2_1_0 = tre1_1_0 + tim1_1_2;
		    tim2_1_0 = tim1_1_0 - tre1_1_2;
		    {
			 FFTW_REAL tre3_0_0;
			 FFTW_REAL tim3_0_0;
			 FFTW_REAL tre3_1_0;
			 FFTW_REAL tim3_1_0;
			 tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 - tim1_1_1);
			 tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 + tre1_1_1);
			 tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 + tim1_1_3);
			 tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 - tim1_1_3);
			 tre2_0_1 = tre3_0_0 - tre3_1_0;
			 tim2_0_1 = tim3_0_0 + tim3_1_0;
			 tre2_1_1 = tre3_0_0 + tre3_1_0;
			 tim2_1_1 = tim3_0_0 - tim3_1_0;
		    }
		    c_re(inout[8 * stride]) = tre2_0_0 + tre2_0_1;
		    c_im(inout[8 * stride]) = tim2_0_0 + tim2_0_1;
		    c_re(inout[40 * stride]) = tre2_0_0 - tre2_0_1;
		    c_im(inout[40 * stride]) = tim2_0_0 - tim2_0_1;
		    c_re(inout[24 * stride]) = tre2_1_0 - tim2_1_1;
		    c_im(inout[24 * stride]) = tim2_1_0 + tre2_1_1;
		    c_re(inout[56 * stride]) = tre2_1_0 + tim2_1_1;
		    c_im(inout[56 * stride]) = tim2_1_0 - tre2_1_1;
	       }
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_0_2;
	       FFTW_REAL tim1_0_2;
	       FFTW_REAL tre1_0_3;
	       FFTW_REAL tim1_0_3;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       FFTW_REAL tre1_1_2;
	       FFTW_REAL tim1_1_2;
	       FFTW_REAL tre1_1_3;
	       FFTW_REAL tim1_1_3;
	       {
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_1_0 = (((FFTW_REAL) FFTW_K923879532) * tre0_1_4) - (((FFTW_REAL) FFTW_K382683432) * tim0_1_4);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K923879532) * tim0_1_4) + (((FFTW_REAL) FFTW_K382683432) * tre0_1_4);
		    tre1_0_0 = tre0_1_0 + tre2_1_0;
		    tim1_0_0 = tim0_1_0 + tim2_1_0;
		    tre1_1_0 = tre0_1_0 - tre2_1_0;
		    tim1_1_0 = tim0_1_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K995184726) * tre0_1_1) - (((FFTW_REAL) FFTW_K098017140) * tim0_1_1);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K995184726) * tim0_1_1) + (((FFTW_REAL) FFTW_K098017140) * tre0_1_1);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K881921264) * tre0_1_5) - (((FFTW_REAL) FFTW_K471396736) * tim0_1_5);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K881921264) * tim0_1_5) + (((FFTW_REAL) FFTW_K471396736) * tre0_1_5);
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K980785280) * tre0_1_2) - (((FFTW_REAL) FFTW_K195090322) * tim0_1_2);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K980785280) * tim0_1_2) + (((FFTW_REAL) FFTW_K195090322) * tre0_1_2);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K831469612) * tre0_1_6) - (((FFTW_REAL) FFTW_K555570233) * tim0_1_6);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K831469612) * tim0_1_6) + (((FFTW_REAL) FFTW_K555570233) * tre0_1_6);
		    tre1_0_2 = tre2_0_0 + tre2_1_0;
		    tim1_0_2 = tim2_0_0 + tim2_1_0;
		    tre1_1_2 = tre2_0_0 - tre2_1_0;
		    tim1_1_2 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K956940335) * tre0_1_3) - (((FFTW_REAL) FFTW_K290284677) * tim0_1_3);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K956940335) * tim0_1_3) + (((FFTW_REAL) FFTW_K290284677) * tre0_1_3);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K773010453) * tre0_1_7) - (((FFTW_REAL) FFTW_K634393284) * tim0_1_7);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K773010453) * tim0_1_7) + (((FFTW_REAL) FFTW_K634393284) * tre0_1_7);
		    tre1_0_3 = tre2_0_0 + tre2_1_0;
		    tim1_0_3 = tim2_0_0 + tim2_1_0;
		    tre1_1_3 = tre2_0_0 - tre2_1_0;
		    tim1_1_3 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_0_0 + tre1_0_2;
		    tim2_0_0 = tim1_0_0 + tim1_0_2;
		    tre2_1_0 = tre1_0_0 - tre1_0_2;
		    tim2_1_0 = tim1_0_0 - tim1_0_2;
		    tre2_0_1 = tre1_0_1 + tre1_0_3;
		    tim2_0_1 = tim1_0_1 + tim1_0_3;
		    tre2_1_1 = tre1_0_1 - tre1_0_3;
		    tim2_1_1 = tim1_0_1 - tim1_0_3;
		    c_re(inout[stride]) = tre2_0_0 + tre2_0_1;
		    c_im(inout[stride]) = tim2_0_0 + tim2_0_1;
		    c_re(inout[33 * stride]) = tre2_0_0 - tre2_0_1;
		    c_im(inout[33 * stride]) = tim2_0_0 - tim2_0_1;
		    c_re(inout[17 * stride]) = tre2_1_0 - tim2_1_1;
		    c_im(inout[17 * stride]) = tim2_1_0 + tre2_1_1;
		    c_re(inout[49 * stride]) = tre2_1_0 + tim2_1_1;
		    c_im(inout[49 * stride]) = tim2_1_0 - tre2_1_1;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_1_0 - tim1_1_2;
		    tim2_0_0 = tim1_1_0 + tre1_1_2;
		    tre2_1_0 = tre1_1_0 + tim1_1_2;
		    tim2_1_0 = tim1_1_0 - tre1_1_2;
		    {
			 FFTW_REAL tre3_0_0;
			 FFTW_REAL tim3_0_0;
			 FFTW_REAL tre3_1_0;
			 FFTW_REAL tim3_1_0;
			 tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 - tim1_1_1);
			 tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 + tre1_1_1);
			 tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 + tim1_1_3);
			 tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 - tim1_1_3);
			 tre2_0_1 = tre3_0_0 - tre3_1_0;
			 tim2_0_1 = tim3_0_0 + tim3_1_0;
			 tre2_1_1 = tre3_0_0 + tre3_1_0;
			 tim2_1_1 = tim3_0_0 - tim3_1_0;
		    }
		    c_re(inout[9 * stride]) = tre2_0_0 + tre2_0_1;
		    c_im(inout[9 * stride]) = tim2_0_0 + tim2_0_1;
		    c_re(inout[41 * stride]) = tre2_0_0 - tre2_0_1;
		    c_im(inout[41 * stride]) = tim2_0_0 - tim2_0_1;
		    c_re(inout[25 * stride]) = tre2_1_0 - tim2_1_1;
		    c_im(inout[25 * stride]) = tim2_1_0 + tre2_1_1;
		    c_re(inout[57 * stride]) = tre2_1_0 + tim2_1_1;
		    c_im(inout[57 * stride]) = tim2_1_0 - tre2_1_1;
	       }
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_0_2;
	       FFTW_REAL tim1_0_2;
	       FFTW_REAL tre1_0_3;
	       FFTW_REAL tim1_0_3;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       FFTW_REAL tre1_1_2;
	       FFTW_REAL tim1_1_2;
	       FFTW_REAL tre1_1_3;
	       FFTW_REAL tim1_1_3;
	       {
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_2_4 - tim0_2_4);
		    tim2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_2_4 + tre0_2_4);
		    tre1_0_0 = tre0_2_0 + tre2_1_0;
		    tim1_0_0 = tim0_2_0 + tim2_1_0;
		    tre1_1_0 = tre0_2_0 - tre2_1_0;
		    tim1_1_0 = tim0_2_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K980785280) * tre0_2_1) - (((FFTW_REAL) FFTW_K195090322) * tim0_2_1);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K980785280) * tim0_2_1) + (((FFTW_REAL) FFTW_K195090322) * tre0_2_1);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K555570233) * tre0_2_5) - (((FFTW_REAL) FFTW_K831469612) * tim0_2_5);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K555570233) * tim0_2_5) + (((FFTW_REAL) FFTW_K831469612) * tre0_2_5);
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K923879532) * tre0_2_2) - (((FFTW_REAL) FFTW_K382683432) * tim0_2_2);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K923879532) * tim0_2_2) + (((FFTW_REAL) FFTW_K382683432) * tre0_2_2);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tre0_2_6) - (((FFTW_REAL) FFTW_K923879532) * tim0_2_6);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tim0_2_6) + (((FFTW_REAL) FFTW_K923879532) * tre0_2_6);
		    tre1_0_2 = tre2_0_0 + tre2_1_0;
		    tim1_0_2 = tim2_0_0 + tim2_1_0;
		    tre1_1_2 = tre2_0_0 - tre2_1_0;
		    tim1_1_2 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K831469612) * tre0_2_3) - (((FFTW_REAL) FFTW_K555570233) * tim0_2_3);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K831469612) * tim0_2_3) + (((FFTW_REAL) FFTW_K555570233) * tre0_2_3);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K195090322) * tre0_2_7) - (((FFTW_REAL) FFTW_K980785280) * tim0_2_7);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K195090322) * tim0_2_7) + (((FFTW_REAL) FFTW_K980785280) * tre0_2_7);
		    tre1_0_3 = tre2_0_0 + tre2_1_0;
		    tim1_0_3 = tim2_0_0 + tim2_1_0;
		    tre1_1_3 = tre2_0_0 - tre2_1_0;
		    tim1_1_3 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_0_0 + tre1_0_2;
		    tim2_0_0 = tim1_0_0 + tim1_0_2;
		    tre2_1_0 = tre1_0_0 - tre1_0_2;
		    tim2_1_0 = tim1_0_0 - tim1_0_2;
		    tre2_0_1 = tre1_0_1 + tre1_0_3;
		    tim2_0_1 = tim1_0_1 + tim1_0_3;
		    tre2_1_1 = tre1_0_1 - tre1_0_3;
		    tim2_1_1 = tim1_0_1 - tim1_0_3;
		    c_re(inout[2 * stride]) = tre2_0_0 + tre2_0_1;
		    c_im(inout[2 * stride]) = tim2_0_0 + tim2_0_1;
		    c_re(inout[34 * stride]) = tre2_0_0 - tre2_0_1;
		    c_im(inout[34 * stride]) = tim2_0_0 - tim2_0_1;
		    c_re(inout[18 * stride]) = tre2_1_0 - tim2_1_1;
		    c_im(inout[18 * stride]) = tim2_1_0 + tre2_1_1;
		    c_re(inout[50 * stride]) = tre2_1_0 + tim2_1_1;
		    c_im(inout[50 * stride]) = tim2_1_0 - tre2_1_1;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_1_0 - tim1_1_2;
		    tim2_0_0 = tim1_1_0 + tre1_1_2;
		    tre2_1_0 = tre1_1_0 + tim1_1_2;
		    tim2_1_0 = tim1_1_0 - tre1_1_2;
		    {
			 FFTW_REAL tre3_0_0;
			 FFTW_REAL tim3_0_0;
			 FFTW_REAL tre3_1_0;
			 FFTW_REAL tim3_1_0;
			 tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 - tim1_1_1);
			 tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 + tre1_1_1);
			 tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 + tim1_1_3);
			 tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 - tim1_1_3);
			 tre2_0_1 = tre3_0_0 - tre3_1_0;
			 tim2_0_1 = tim3_0_0 + tim3_1_0;
			 tre2_1_1 = tre3_0_0 + tre3_1_0;
			 tim2_1_1 = tim3_0_0 - tim3_1_0;
		    }
		    c_re(inout[10 * stride]) = tre2_0_0 + tre2_0_1;
		    c_im(inout[10 * stride]) = tim2_0_0 + tim2_0_1;
		    c_re(inout[42 * stride]) = tre2_0_0 - tre2_0_1;
		    c_im(inout[42 * stride]) = tim2_0_0 - tim2_0_1;
		    c_re(inout[26 * stride]) = tre2_1_0 - tim2_1_1;
		    c_im(inout[26 * stride]) = tim2_1_0 + tre2_1_1;
		    c_re(inout[58 * stride]) = tre2_1_0 + tim2_1_1;
		    c_im(inout[58 * stride]) = tim2_1_0 - tre2_1_1;
	       }
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_0_2;
	       FFTW_REAL tim1_0_2;
	       FFTW_REAL tre1_0_3;
	       FFTW_REAL tim1_0_3;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       FFTW_REAL tre1_1_2;
	       FFTW_REAL tim1_1_2;
	       FFTW_REAL tre1_1_3;
	       FFTW_REAL tim1_1_3;
	       {
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tre0_3_4) - (((FFTW_REAL) FFTW_K923879532) * tim0_3_4);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tim0_3_4) + (((FFTW_REAL) FFTW_K923879532) * tre0_3_4);
		    tre1_0_0 = tre0_3_0 + tre2_1_0;
		    tim1_0_0 = tim0_3_0 + tim2_1_0;
		    tre1_1_0 = tre0_3_0 - tre2_1_0;
		    tim1_1_0 = tim0_3_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K956940335) * tre0_3_1) - (((FFTW_REAL) FFTW_K290284677) * tim0_3_1);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K956940335) * tim0_3_1) + (((FFTW_REAL) FFTW_K290284677) * tre0_3_1);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K098017140) * tre0_3_5) - (((FFTW_REAL) FFTW_K995184726) * tim0_3_5);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K098017140) * tim0_3_5) + (((FFTW_REAL) FFTW_K995184726) * tre0_3_5);
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K831469612) * tre0_3_2) - (((FFTW_REAL) FFTW_K555570233) * tim0_3_2);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K831469612) * tim0_3_2) + (((FFTW_REAL) FFTW_K555570233) * tre0_3_2);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K195090322) * tre0_3_6) + (((FFTW_REAL) FFTW_K980785280) * tim0_3_6);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K980785280) * tre0_3_6) - (((FFTW_REAL) FFTW_K195090322) * tim0_3_6);
		    tre1_0_2 = tre2_0_0 - tre2_1_0;
		    tim1_0_2 = tim2_0_0 + tim2_1_0;
		    tre1_1_2 = tre2_0_0 + tre2_1_0;
		    tim1_1_2 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K634393284) * tre0_3_3) - (((FFTW_REAL) FFTW_K773010453) * tim0_3_3);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K634393284) * tim0_3_3) + (((FFTW_REAL) FFTW_K773010453) * tre0_3_3);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K471396736) * tre0_3_7) + (((FFTW_REAL) FFTW_K881921264) * tim0_3_7);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K881921264) * tre0_3_7) - (((FFTW_REAL) FFTW_K471396736) * tim0_3_7);
		    tre1_0_3 = tre2_0_0 - tre2_1_0;
		    tim1_0_3 = tim2_0_0 + tim2_1_0;
		    tre1_1_3 = tre2_0_0 + tre2_1_0;
		    tim1_1_3 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_0_0 + tre1_0_2;
		    tim2_0_0 = tim1_0_0 + tim1_0_2;
		    tre2_1_0 = tre1_0_0 - tre1_0_2;
		    tim2_1_0 = tim1_0_0 - tim1_0_2;
		    tre2_0_1 = tre1_0_1 + tre1_0_3;
		    tim2_0_1 = tim1_0_1 + tim1_0_3;
		    tre2_1_1 = tre1_0_1 - tre1_0_3;
		    tim2_1_1 = tim1_0_1 - tim1_0_3;
		    c_re(inout[3 * stride]) = tre2_0_0 + tre2_0_1;
		    c_im(inout[3 * stride]) = tim2_0_0 + tim2_0_1;
		    c_re(inout[35 * stride]) = tre2_0_0 - tre2_0_1;
		    c_im(inout[35 * stride]) = tim2_0_0 - tim2_0_1;
		    c_re(inout[19 * stride]) = tre2_1_0 - tim2_1_1;
		    c_im(inout[19 * stride]) = tim2_1_0 + tre2_1_1;
		    c_re(inout[51 * stride]) = tre2_1_0 + tim2_1_1;
		    c_im(inout[51 * stride]) = tim2_1_0 - tre2_1_1;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_1_0 - tim1_1_2;
		    tim2_0_0 = tim1_1_0 + tre1_1_2;
		    tre2_1_0 = tre1_1_0 + tim1_1_2;
		    tim2_1_0 = tim1_1_0 - tre1_1_2;
		    {
			 FFTW_REAL tre3_0_0;
			 FFTW_REAL tim3_0_0;
			 FFTW_REAL tre3_1_0;
			 FFTW_REAL tim3_1_0;
			 tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 - tim1_1_1);
			 tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 + tre1_1_1);
			 tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 + tim1_1_3);
			 tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 - tim1_1_3);
			 tre2_0_1 = tre3_0_0 - tre3_1_0;
			 tim2_0_1 = tim3_0_0 + tim3_1_0;
			 tre2_1_1 = tre3_0_0 + tre3_1_0;
			 tim2_1_1 = tim3_0_0 - tim3_1_0;
		    }
		    c_re(inout[11 * stride]) = tre2_0_0 + tre2_0_1;
		    c_im(inout[11 * stride]) = tim2_0_0 + tim2_0_1;
		    c_re(inout[43 * stride]) = tre2_0_0 - tre2_0_1;
		    c_im(inout[43 * stride]) = tim2_0_0 - tim2_0_1;
		    c_re(inout[27 * stride]) = tre2_1_0 - tim2_1_1;
		    c_im(inout[27 * stride]) = tim2_1_0 + tre2_1_1;
		    c_re(inout[59 * stride]) = tre2_1_0 + tim2_1_1;
		    c_im(inout[59 * stride]) = tim2_1_0 - tre2_1_1;
	       }
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_0_2;
	       FFTW_REAL tim1_0_2;
	       FFTW_REAL tre1_0_3;
	       FFTW_REAL tim1_0_3;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       FFTW_REAL tre1_1_2;
	       FFTW_REAL tim1_1_2;
	       FFTW_REAL tre1_1_3;
	       FFTW_REAL tim1_1_3;
	       tre1_0_0 = tre0_4_0 - tim0_4_4;
	       tim1_0_0 = tim0_4_0 + tre0_4_4;
	       tre1_1_0 = tre0_4_0 + tim0_4_4;
	       tim1_1_0 = tim0_4_0 - tre0_4_4;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K923879532) * tre0_4_1) - (((FFTW_REAL) FFTW_K382683432) * tim0_4_1);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K923879532) * tim0_4_1) + (((FFTW_REAL) FFTW_K382683432) * tre0_4_1);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tre0_4_5) + (((FFTW_REAL) FFTW_K923879532) * tim0_4_5);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K923879532) * tre0_4_5) - (((FFTW_REAL) FFTW_K382683432) * tim0_4_5);
		    tre1_0_1 = tre2_0_0 - tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 + tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_4_2 - tim0_4_2);
		    tim2_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_4_2 + tre0_4_2);
		    tre2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_4_6 + tim0_4_6);
		    tim2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_4_6 - tim0_4_6);
		    tre1_0_2 = tre2_0_0 - tre2_1_0;
		    tim1_0_2 = tim2_0_0 + tim2_1_0;
		    tre1_1_2 = tre2_0_0 + tre2_1_0;
		    tim1_1_2 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K382683432) * tre0_4_3) - (((FFTW_REAL) FFTW_K923879532) * tim0_4_3);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K382683432) * tim0_4_3) + (((FFTW_REAL) FFTW_K923879532) * tre0_4_3);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K923879532) * tre0_4_7) + (((FFTW_REAL) FFTW_K382683432) * tim0_4_7);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tre0_4_7) - (((FFTW_REAL) FFTW_K923879532) * tim0_4_7);
		    tre1_0_3 = tre2_0_0 - tre2_1_0;
		    tim1_0_3 = tim2_0_0 + tim2_1_0;
		    tre1_1_3 = tre2_0_0 + tre2_1_0;
		    tim1_1_3 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_0_0 + tre1_0_2;
		    tim2_0_0 = tim1_0_0 + tim1_0_2;
		    tre2_1_0 = tre1_0_0 - tre1_0_2;
		    tim2_1_0 = tim1_0_0 - tim1_0_2;
		    tre2_0_1 = tre1_0_1 + tre1_0_3;
		    tim2_0_1 = tim1_0_1 + tim1_0_3;
		    tre2_1_1 = tre1_0_1 - tre1_0_3;
		    tim2_1_1 = tim1_0_1 - tim1_0_3;
		    c_re(inout[4 * stride]) = tre2_0_0 + tre2_0_1;
		    c_im(inout[4 * stride]) = tim2_0_0 + tim2_0_1;
		    c_re(inout[36 * stride]) = tre2_0_0 - tre2_0_1;
		    c_im(inout[36 * stride]) = tim2_0_0 - tim2_0_1;
		    c_re(inout[20 * stride]) = tre2_1_0 - tim2_1_1;
		    c_im(inout[20 * stride]) = tim2_1_0 + tre2_1_1;
		    c_re(inout[52 * stride]) = tre2_1_0 + tim2_1_1;
		    c_im(inout[52 * stride]) = tim2_1_0 - tre2_1_1;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_1_0 - tim1_1_2;
		    tim2_0_0 = tim1_1_0 + tre1_1_2;
		    tre2_1_0 = tre1_1_0 + tim1_1_2;
		    tim2_1_0 = tim1_1_0 - tre1_1_2;
		    {
			 FFTW_REAL tre3_0_0;
			 FFTW_REAL tim3_0_0;
			 FFTW_REAL tre3_1_0;
			 FFTW_REAL tim3_1_0;
			 tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 - tim1_1_1);
			 tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 + tre1_1_1);
			 tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 + tim1_1_3);
			 tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 - tim1_1_3);
			 tre2_0_1 = tre3_0_0 - tre3_1_0;
			 tim2_0_1 = tim3_0_0 + tim3_1_0;
			 tre2_1_1 = tre3_0_0 + tre3_1_0;
			 tim2_1_1 = tim3_0_0 - tim3_1_0;
		    }
		    c_re(inout[12 * stride]) = tre2_0_0 + tre2_0_1;
		    c_im(inout[12 * stride]) = tim2_0_0 + tim2_0_1;
		    c_re(inout[44 * stride]) = tre2_0_0 - tre2_0_1;
		    c_im(inout[44 * stride]) = tim2_0_0 - tim2_0_1;
		    c_re(inout[28 * stride]) = tre2_1_0 - tim2_1_1;
		    c_im(inout[28 * stride]) = tim2_1_0 + tre2_1_1;
		    c_re(inout[60 * stride]) = tre2_1_0 + tim2_1_1;
		    c_im(inout[60 * stride]) = tim2_1_0 - tre2_1_1;
	       }
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_0_2;
	       FFTW_REAL tim1_0_2;
	       FFTW_REAL tre1_0_3;
	       FFTW_REAL tim1_0_3;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       FFTW_REAL tre1_1_2;
	       FFTW_REAL tim1_1_2;
	       FFTW_REAL tre1_1_3;
	       FFTW_REAL tim1_1_3;
	       {
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tre0_5_4) + (((FFTW_REAL) FFTW_K923879532) * tim0_5_4);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K923879532) * tre0_5_4) - (((FFTW_REAL) FFTW_K382683432) * tim0_5_4);
		    tre1_0_0 = tre0_5_0 - tre2_1_0;
		    tim1_0_0 = tim0_5_0 + tim2_1_0;
		    tre1_1_0 = tre0_5_0 + tre2_1_0;
		    tim1_1_0 = tim0_5_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K881921264) * tre0_5_1) - (((FFTW_REAL) FFTW_K471396736) * tim0_5_1);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K881921264) * tim0_5_1) + (((FFTW_REAL) FFTW_K471396736) * tre0_5_1);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K773010453) * tre0_5_5) + (((FFTW_REAL) FFTW_K634393284) * tim0_5_5);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K634393284) * tre0_5_5) - (((FFTW_REAL) FFTW_K773010453) * tim0_5_5);
		    tre1_0_1 = tre2_0_0 - tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 + tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K555570233) * tre0_5_2) - (((FFTW_REAL) FFTW_K831469612) * tim0_5_2);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K555570233) * tim0_5_2) + (((FFTW_REAL) FFTW_K831469612) * tre0_5_2);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K980785280) * tre0_5_6) + (((FFTW_REAL) FFTW_K195090322) * tim0_5_6);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K195090322) * tre0_5_6) - (((FFTW_REAL) FFTW_K980785280) * tim0_5_6);
		    tre1_0_2 = tre2_0_0 - tre2_1_0;
		    tim1_0_2 = tim2_0_0 + tim2_1_0;
		    tre1_1_2 = tre2_0_0 + tre2_1_0;
		    tim1_1_2 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K098017140) * tre0_5_3) - (((FFTW_REAL) FFTW_K995184726) * tim0_5_3);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K098017140) * tim0_5_3) + (((FFTW_REAL) FFTW_K995184726) * tre0_5_3);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K290284677) * tim0_5_7) - (((FFTW_REAL) FFTW_K956940335) * tre0_5_7);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K956940335) * tim0_5_7) + (((FFTW_REAL) FFTW_K290284677) * tre0_5_7);
		    tre1_0_3 = tre2_0_0 + tre2_1_0;
		    tim1_0_3 = tim2_0_0 - tim2_1_0;
		    tre1_1_3 = tre2_0_0 - tre2_1_0;
		    tim1_1_3 = tim2_0_0 + tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_0_0 + tre1_0_2;
		    tim2_0_0 = tim1_0_0 + tim1_0_2;
		    tre2_1_0 = tre1_0_0 - tre1_0_2;
		    tim2_1_0 = tim1_0_0 - tim1_0_2;
		    tre2_0_1 = tre1_0_1 + tre1_0_3;
		    tim2_0_1 = tim1_0_1 + tim1_0_3;
		    tre2_1_1 = tre1_0_1 - tre1_0_3;
		    tim2_1_1 = tim1_0_1 - tim1_0_3;
		    c_re(inout[5 * stride]) = tre2_0_0 + tre2_0_1;
		    c_im(inout[5 * stride]) = tim2_0_0 + tim2_0_1;
		    c_re(inout[37 * stride]) = tre2_0_0 - tre2_0_1;
		    c_im(inout[37 * stride]) = tim2_0_0 - tim2_0_1;
		    c_re(inout[21 * stride]) = tre2_1_0 - tim2_1_1;
		    c_im(inout[21 * stride]) = tim2_1_0 + tre2_1_1;
		    c_re(inout[53 * stride]) = tre2_1_0 + tim2_1_1;
		    c_im(inout[53 * stride]) = tim2_1_0 - tre2_1_1;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_1_0 - tim1_1_2;
		    tim2_0_0 = tim1_1_0 + tre1_1_2;
		    tre2_1_0 = tre1_1_0 + tim1_1_2;
		    tim2_1_0 = tim1_1_0 - tre1_1_2;
		    {
			 FFTW_REAL tre3_0_0;
			 FFTW_REAL tim3_0_0;
			 FFTW_REAL tre3_1_0;
			 FFTW_REAL tim3_1_0;
			 tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 - tim1_1_1);
			 tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 + tre1_1_1);
			 tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 + tim1_1_3);
			 tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 - tim1_1_3);
			 tre2_0_1 = tre3_0_0 - tre3_1_0;
			 tim2_0_1 = tim3_0_0 + tim3_1_0;
			 tre2_1_1 = tre3_0_0 + tre3_1_0;
			 tim2_1_1 = tim3_0_0 - tim3_1_0;
		    }
		    c_re(inout[13 * stride]) = tre2_0_0 + tre2_0_1;
		    c_im(inout[13 * stride]) = tim2_0_0 + tim2_0_1;
		    c_re(inout[45 * stride]) = tre2_0_0 - tre2_0_1;
		    c_im(inout[45 * stride]) = tim2_0_0 - tim2_0_1;
		    c_re(inout[29 * stride]) = tre2_1_0 - tim2_1_1;
		    c_im(inout[29 * stride]) = tim2_1_0 + tre2_1_1;
		    c_re(inout[61 * stride]) = tre2_1_0 + tim2_1_1;
		    c_im(inout[61 * stride]) = tim2_1_0 - tre2_1_1;
	       }
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_0_2;
	       FFTW_REAL tim1_0_2;
	       FFTW_REAL tre1_0_3;
	       FFTW_REAL tim1_0_3;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       FFTW_REAL tre1_1_2;
	       FFTW_REAL tim1_1_2;
	       FFTW_REAL tre1_1_3;
	       FFTW_REAL tim1_1_3;
	       {
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_6_4 + tim0_6_4);
		    tim2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_6_4 - tim0_6_4);
		    tre1_0_0 = tre0_6_0 - tre2_1_0;
		    tim1_0_0 = tim0_6_0 + tim2_1_0;
		    tre1_1_0 = tre0_6_0 + tre2_1_0;
		    tim1_1_0 = tim0_6_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K831469612) * tre0_6_1) - (((FFTW_REAL) FFTW_K555570233) * tim0_6_1);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K831469612) * tim0_6_1) + (((FFTW_REAL) FFTW_K555570233) * tre0_6_1);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K980785280) * tre0_6_5) + (((FFTW_REAL) FFTW_K195090322) * tim0_6_5);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K195090322) * tre0_6_5) - (((FFTW_REAL) FFTW_K980785280) * tim0_6_5);
		    tre1_0_1 = tre2_0_0 - tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 + tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K382683432) * tre0_6_2) - (((FFTW_REAL) FFTW_K923879532) * tim0_6_2);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K382683432) * tim0_6_2) + (((FFTW_REAL) FFTW_K923879532) * tre0_6_2);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tim0_6_6) - (((FFTW_REAL) FFTW_K923879532) * tre0_6_6);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K923879532) * tim0_6_6) + (((FFTW_REAL) FFTW_K382683432) * tre0_6_6);
		    tre1_0_2 = tre2_0_0 + tre2_1_0;
		    tim1_0_2 = tim2_0_0 - tim2_1_0;
		    tre1_1_2 = tre2_0_0 - tre2_1_0;
		    tim1_1_2 = tim2_0_0 + tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K195090322) * tre0_6_3) + (((FFTW_REAL) FFTW_K980785280) * tim0_6_3);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K980785280) * tre0_6_3) - (((FFTW_REAL) FFTW_K195090322) * tim0_6_3);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K831469612) * tim0_6_7) - (((FFTW_REAL) FFTW_K555570233) * tre0_6_7);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K555570233) * tim0_6_7) + (((FFTW_REAL) FFTW_K831469612) * tre0_6_7);
		    tre1_0_3 = tre2_1_0 - tre2_0_0;
		    tim1_0_3 = tim2_0_0 - tim2_1_0;
		    tre1_1_3 = (-(tre2_0_0 + tre2_1_0));
		    tim1_1_3 = tim2_0_0 + tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_0_0 + tre1_0_2;
		    tim2_0_0 = tim1_0_0 + tim1_0_2;
		    tre2_1_0 = tre1_0_0 - tre1_0_2;
		    tim2_1_0 = tim1_0_0 - tim1_0_2;
		    tre2_0_1 = tre1_0_1 + tre1_0_3;
		    tim2_0_1 = tim1_0_1 + tim1_0_3;
		    tre2_1_1 = tre1_0_1 - tre1_0_3;
		    tim2_1_1 = tim1_0_1 - tim1_0_3;
		    c_re(inout[6 * stride]) = tre2_0_0 + tre2_0_1;
		    c_im(inout[6 * stride]) = tim2_0_0 + tim2_0_1;
		    c_re(inout[38 * stride]) = tre2_0_0 - tre2_0_1;
		    c_im(inout[38 * stride]) = tim2_0_0 - tim2_0_1;
		    c_re(inout[22 * stride]) = tre2_1_0 - tim2_1_1;
		    c_im(inout[22 * stride]) = tim2_1_0 + tre2_1_1;
		    c_re(inout[54 * stride]) = tre2_1_0 + tim2_1_1;
		    c_im(inout[54 * stride]) = tim2_1_0 - tre2_1_1;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_1_0 - tim1_1_2;
		    tim2_0_0 = tim1_1_0 + tre1_1_2;
		    tre2_1_0 = tre1_1_0 + tim1_1_2;
		    tim2_1_0 = tim1_1_0 - tre1_1_2;
		    {
			 FFTW_REAL tre3_0_0;
			 FFTW_REAL tim3_0_0;
			 FFTW_REAL tre3_1_0;
			 FFTW_REAL tim3_1_0;
			 tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 - tim1_1_1);
			 tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 + tre1_1_1);
			 tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 + tim1_1_3);
			 tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 - tim1_1_3);
			 tre2_0_1 = tre3_0_0 - tre3_1_0;
			 tim2_0_1 = tim3_0_0 + tim3_1_0;
			 tre2_1_1 = tre3_0_0 + tre3_1_0;
			 tim2_1_1 = tim3_0_0 - tim3_1_0;
		    }
		    c_re(inout[14 * stride]) = tre2_0_0 + tre2_0_1;
		    c_im(inout[14 * stride]) = tim2_0_0 + tim2_0_1;
		    c_re(inout[46 * stride]) = tre2_0_0 - tre2_0_1;
		    c_im(inout[46 * stride]) = tim2_0_0 - tim2_0_1;
		    c_re(inout[30 * stride]) = tre2_1_0 - tim2_1_1;
		    c_im(inout[30 * stride]) = tim2_1_0 + tre2_1_1;
		    c_re(inout[62 * stride]) = tre2_1_0 + tim2_1_1;
		    c_im(inout[62 * stride]) = tim2_1_0 - tre2_1_1;
	       }
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_0_2;
	       FFTW_REAL tim1_0_2;
	       FFTW_REAL tre1_0_3;
	       FFTW_REAL tim1_0_3;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       FFTW_REAL tre1_1_2;
	       FFTW_REAL tim1_1_2;
	       FFTW_REAL tre1_1_3;
	       FFTW_REAL tim1_1_3;
	       {
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_1_0 = (((FFTW_REAL) FFTW_K923879532) * tre0_7_4) + (((FFTW_REAL) FFTW_K382683432) * tim0_7_4);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K382683432) * tre0_7_4) - (((FFTW_REAL) FFTW_K923879532) * tim0_7_4);
		    tre1_0_0 = tre0_7_0 - tre2_1_0;
		    tim1_0_0 = tim0_7_0 + tim2_1_0;
		    tre1_1_0 = tre0_7_0 + tre2_1_0;
		    tim1_1_0 = tim0_7_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K773010453) * tre0_7_1) - (((FFTW_REAL) FFTW_K634393284) * tim0_7_1);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K773010453) * tim0_7_1) + (((FFTW_REAL) FFTW_K634393284) * tre0_7_1);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K290284677) * tim0_7_5) - (((FFTW_REAL) FFTW_K956940335) * tre0_7_5);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K956940335) * tim0_7_5) + (((FFTW_REAL) FFTW_K290284677) * tre0_7_5);
		    tre1_0_1 = tre2_0_0 + tre2_1_0;
		    tim1_0_1 = tim2_0_0 - tim2_1_0;
		    tre1_1_1 = tre2_0_0 - tre2_1_0;
		    tim1_1_1 = tim2_0_0 + tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K195090322) * tre0_7_2) - (((FFTW_REAL) FFTW_K980785280) * tim0_7_2);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K195090322) * tim0_7_2) + (((FFTW_REAL) FFTW_K980785280) * tre0_7_2);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K831469612) * tim0_7_6) - (((FFTW_REAL) FFTW_K555570233) * tre0_7_6);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K555570233) * tim0_7_6) + (((FFTW_REAL) FFTW_K831469612) * tre0_7_6);
		    tre1_0_2 = tre2_0_0 + tre2_1_0;
		    tim1_0_2 = tim2_0_0 - tim2_1_0;
		    tre1_1_2 = tre2_0_0 - tre2_1_0;
		    tim1_1_2 = tim2_0_0 + tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = (((FFTW_REAL) FFTW_K471396736) * tre0_7_3) + (((FFTW_REAL) FFTW_K881921264) * tim0_7_3);
		    tim2_0_0 = (((FFTW_REAL) FFTW_K881921264) * tre0_7_3) - (((FFTW_REAL) FFTW_K471396736) * tim0_7_3);
		    tre2_1_0 = (((FFTW_REAL) FFTW_K098017140) * tre0_7_7) + (((FFTW_REAL) FFTW_K995184726) * tim0_7_7);
		    tim2_1_0 = (((FFTW_REAL) FFTW_K098017140) * tim0_7_7) - (((FFTW_REAL) FFTW_K995184726) * tre0_7_7);
		    tre1_0_3 = tre2_1_0 - tre2_0_0;
		    tim1_0_3 = tim2_0_0 + tim2_1_0;
		    tre1_1_3 = (-(tre2_0_0 + tre2_1_0));
		    tim1_1_3 = tim2_0_0 - tim2_1_0;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_0_0 + tre1_0_2;
		    tim2_0_0 = tim1_0_0 + tim1_0_2;
		    tre2_1_0 = tre1_0_0 - tre1_0_2;
		    tim2_1_0 = tim1_0_0 - tim1_0_2;
		    tre2_0_1 = tre1_0_1 + tre1_0_3;
		    tim2_0_1 = tim1_0_1 + tim1_0_3;
		    tre2_1_1 = tre1_0_1 - tre1_0_3;
		    tim2_1_1 = tim1_0_1 - tim1_0_3;
		    c_re(inout[7 * stride]) = tre2_0_0 + tre2_0_1;
		    c_im(inout[7 * stride]) = tim2_0_0 + tim2_0_1;
		    c_re(inout[39 * stride]) = tre2_0_0 - tre2_0_1;
		    c_im(inout[39 * stride]) = tim2_0_0 - tim2_0_1;
		    c_re(inout[23 * stride]) = tre2_1_0 - tim2_1_1;
		    c_im(inout[23 * stride]) = tim2_1_0 + tre2_1_1;
		    c_re(inout[55 * stride]) = tre2_1_0 + tim2_1_1;
		    c_im(inout[55 * stride]) = tim2_1_0 - tre2_1_1;
	       }
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_0_1;
		    FFTW_REAL tim2_0_1;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    FFTW_REAL tre2_1_1;
		    FFTW_REAL tim2_1_1;
		    tre2_0_0 = tre1_1_0 - tim1_1_2;
		    tim2_0_0 = tim1_1_0 + tre1_1_2;
		    tre2_1_0 = tre1_1_0 + tim1_1_2;
		    tim2_1_0 = tim1_1_0 - tre1_1_2;
		    {
			 FFTW_REAL tre3_0_0;
			 FFTW_REAL tim3_0_0;
			 FFTW_REAL tre3_1_0;
			 FFTW_REAL tim3_1_0;
			 tre3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_1 - tim1_1_1);
			 tim3_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim1_1_1 + tre1_1_1);
			 tre3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 + tim1_1_3);
			 tim3_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre1_1_3 - tim1_1_3);
			 tre2_0_1 = tre3_0_0 - tre3_1_0;
			 tim2_0_1 = tim3_0_0 + tim3_1_0;
			 tre2_1_1 = tre3_0_0 + tre3_1_0;
			 tim2_1_1 = tim3_0_0 - tim3_1_0;
		    }
		    c_re(inout[15 * stride]) = tre2_0_0 + tre2_0_1;
		    c_im(inout[15 * stride]) = tim2_0_0 + tim2_0_1;
		    c_re(inout[47 * stride]) = tre2_0_0 - tre2_0_1;
		    c_im(inout[47 * stride]) = tim2_0_0 - tim2_0_1;
		    c_re(inout[31 * stride]) = tre2_1_0 - tim2_1_1;
		    c_im(inout[31 * stride]) = tim2_1_0 + tre2_1_1;
		    c_re(inout[63 * stride]) = tre2_1_0 + tim2_1_1;
		    c_im(inout[63 * stride]) = tim2_1_0 - tre2_1_1;
	       }
	  }
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 102 FP additions and 60 FP multiplications */

void fftwi_twiddle_7(FFTW_COMPLEX *A, const FFTW_COMPLEX *W, int stride, int m, int dist)
{
     int i;
     COMPLEX *inout;
     inout = A;
     for (i = 0; i < m; i = i + 1, inout = inout + dist, W = W + 6) {
	  FFTW_REAL tre0_0_0;
	  FFTW_REAL tim0_0_0;
	  FFTW_REAL tre0_1_0;
	  FFTW_REAL tim0_1_0;
	  FFTW_REAL tre0_2_0;
	  FFTW_REAL tim0_2_0;
	  FFTW_REAL tre0_3_0;
	  FFTW_REAL tim0_3_0;
	  FFTW_REAL tre0_4_0;
	  FFTW_REAL tim0_4_0;
	  FFTW_REAL tre0_5_0;
	  FFTW_REAL tim0_5_0;
	  FFTW_REAL tre0_6_0;
	  FFTW_REAL tim0_6_0;
	  tre0_0_0 = c_re(inout[0]);
	  tim0_0_0 = c_im(inout[0]);
	  {
	       FFTW_REAL tr;
	       FFTW_REAL ti;
	       FFTW_REAL twr;
	       FFTW_REAL twi;
	       tr = c_re(inout[stride]);
	       ti = c_im(inout[stride]);
	       twr = c_re(W[0]);
	       twi = c_im(W[0]);
	       tre0_1_0 = (tr * twr) + (ti * twi);
	       tim0_1_0 = (ti * twr) - (tr * twi);
	  }
	  {
	       FFTW_REAL tr;
	       FFTW_REAL ti;
	       FFTW_REAL twr;
	       FFTW_REAL twi;
	       tr = c_re(inout[2 * stride]);
	       ti = c_im(inout[2 * stride]);
	       twr = c_re(W[1]);
	       twi = c_im(W[1]);
	       tre0_2_0 = (tr * twr) + (ti * twi);
	       tim0_2_0 = (ti * twr) - (tr * twi);
	  }
	  {
	       FFTW_REAL tr;
	       FFTW_REAL ti;
	       FFTW_REAL twr;
	       FFTW_REAL twi;
	       tr = c_re(inout[3 * stride]);
	       ti = c_im(inout[3 * stride]);
	       twr = c_re(W[2]);
	       twi = c_im(W[2]);
	       tre0_3_0 = (tr * twr) + (ti * twi);
	       tim0_3_0 = (ti * twr) - (tr * twi);
	  }
	  {
	       FFTW_REAL tr;
	       FFTW_REAL ti;
	       FFTW_REAL twr;
	       FFTW_REAL twi;
	       tr = c_re(inout[4 * stride]);
	       ti = c_im(inout[4 * stride]);
	       twr = c_re(W[3]);
	       twi = c_im(W[3]);
	       tre0_4_0 = (tr * twr) + (ti * twi);
	       tim0_4_0 = (ti * twr) - (tr * twi);
	  }
	  {
	       FFTW_REAL tr;
	       FFTW_REAL ti;
	       FFTW_REAL twr;
	       FFTW_REAL twi;
	       tr = c_re(inout[5 * stride]);
	       ti = c_im(inout[5 * stride]);
	       twr = c_re(W[4]);
	       twi = c_im(W[4]);
	       tre0_5_0 = (tr * twr) + (ti * twi);
	       tim0_5_0 = (ti * twr) - (tr * twi);
	  }
	  {
	       FFTW_REAL tr;
	       FFTW_REAL ti;
	       FFTW_REAL twr;
	       FFTW_REAL twi;
	       tr = c_re(inout[6 * stride]);
	       ti = c_im(inout[6 * stride]);
	       twr = c_re(W[5]);
	       twi = c_im(W[5]);
	       tre0_6_0 = (tr * twr) + (ti * twi);
	       tim0_6_0 = (ti * twr) - (tr * twi);
	  }
	  c_re(inout[0]) = tre0_0_0 + tre0_1_0 + tre0_2_0 + tre0_3_0 + tre0_4_0 + tre0_5_0 + tre0_6_0;
	  c_im(inout[0]) = tim0_0_0 + tim0_1_0 + tim0_2_0 + tim0_3_0 + tim0_4_0 + tim0_5_0 + tim0_6_0;
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tre1_1_0;
	       tre1_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K623489801) * (tre0_1_0 + tre0_6_0)) - (((FFTW_REAL) FFTW_K900968867) * (tre0_3_0 + tre0_4_0)) - (((FFTW_REAL) FFTW_K222520933) * (tre0_2_0 + tre0_5_0));
	       tre1_1_0 = (((FFTW_REAL) FFTW_K781831482) * (tim0_6_0 - tim0_1_0)) + (((FFTW_REAL) FFTW_K974927912) * (tim0_5_0 - tim0_2_0)) + (((FFTW_REAL) FFTW_K433883739) * (tim0_4_0 - tim0_3_0));
	       c_re(inout[stride]) = tre1_0_0 + tre1_1_0;
	       c_re(inout[6 * stride]) = tre1_0_0 - tre1_1_0;
	  }
	  {
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tim1_1_0;
	       tim1_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K623489801) * (tim0_1_0 + tim0_6_0)) - (((FFTW_REAL) FFTW_K900968867) * (tim0_3_0 + tim0_4_0)) - (((FFTW_REAL) FFTW_K222520933) * (tim0_2_0 + tim0_5_0));
	       tim1_1_0 = (((FFTW_REAL) FFTW_K781831482) * (tre0_1_0 - tre0_6_0)) + (((FFTW_REAL) FFTW_K974927912) * (tre0_2_0 - tre0_5_0)) + (((FFTW_REAL) FFTW_K433883739) * (tre0_3_0 - tre0_4_0));
	       c_im(inout[stride]) = tim1_0_0 + tim1_1_0;
	       c_im(inout[6 * stride]) = tim1_0_0 - tim1_1_0;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tre1_1_0;
	       tre1_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K623489801) * (tre0_3_0 + tre0_4_0)) - (((FFTW_REAL) FFTW_K900968867) * (tre0_2_0 + tre0_5_0)) - (((FFTW_REAL) FFTW_K222520933) * (tre0_1_0 + tre0_6_0));
	       tre1_1_0 = (((FFTW_REAL) FFTW_K974927912) * (tim0_6_0 - tim0_1_0)) + (((FFTW_REAL) FFTW_K433883739) * (tim0_2_0 - tim0_5_0)) + (((FFTW_REAL) FFTW_K781831482) * (tim0_3_0 - tim0_4_0));
	       c_re(inout[2 * stride]) = tre1_0_0 + tre1_1_0;
	       c_re(inout[5 * stride]) = tre1_0_0 - tre1_1_0;
	  }
	  {
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tim1_1_0;
	       tim1_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K623489801) * (tim0_3_0 + tim0_4_0)) - (((FFTW_REAL) FFTW_K900968867) * (tim0_2_0 + tim0_5_0)) - (((FFTW_REAL) FFTW_K222520933) * (tim0_1_0 + tim0_6_0));
	       tim1_1_0 = (((FFTW_REAL) FFTW_K974927912) * (tre0_1_0 - tre0_6_0)) + (((FFTW_REAL) FFTW_K433883739) * (tre0_5_0 - tre0_2_0)) + (((FFTW_REAL) FFTW_K781831482) * (tre0_4_0 - tre0_3_0));
	       c_im(inout[2 * stride]) = tim1_0_0 + tim1_1_0;
	       c_im(inout[5 * stride]) = tim1_0_0 - tim1_1_0;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tre1_1_0;
	       tre1_0_0 = tre0_0_0 + (((FFTW_REAL) FFTW_K623489801) * (tre0_2_0 + tre0_5_0)) - (((FFTW_REAL) FFTW_K222520933) * (tre0_3_0 + tre0_4_0)) - (((FFTW_REAL) FFTW_K900968867) * (tre0_1_0 + tre0_6_0));
	       tre1_1_0 = (((FFTW_REAL) FFTW_K433883739) * (tim0_6_0 - tim0_1_0)) + (((FFTW_REAL) FFTW_K781831482) * (tim0_2_0 - tim0_5_0)) + (((FFTW_REAL) FFTW_K974927912) * (tim0_4_0 - tim0_3_0));
	       c_re(inout[3 * stride]) = tre1_0_0 + tre1_1_0;
	       c_re(inout[4 * stride]) = tre1_0_0 - tre1_1_0;
	  }
	  {
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tim1_1_0;
	       tim1_0_0 = tim0_0_0 + (((FFTW_REAL) FFTW_K623489801) * (tim0_2_0 + tim0_5_0)) - (((FFTW_REAL) FFTW_K222520933) * (tim0_3_0 + tim0_4_0)) - (((FFTW_REAL) FFTW_K900968867) * (tim0_1_0 + tim0_6_0));
	       tim1_1_0 = (((FFTW_REAL) FFTW_K433883739) * (tre0_1_0 - tre0_6_0)) + (((FFTW_REAL) FFTW_K781831482) * (tre0_5_0 - tre0_2_0)) + (((FFTW_REAL) FFTW_K974927912) * (tre0_3_0 - tre0_4_0));
	       c_im(inout[3 * stride]) = tim1_0_0 + tim1_1_0;
	       c_im(inout[4 * stride]) = tim1_0_0 - tim1_1_0;
	  }
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 66 FP additions and 32 FP multiplications */

void fftwi_twiddle_8(FFTW_COMPLEX *A, const FFTW_COMPLEX *W, int stride, int m, int dist)
{
     int i;
     COMPLEX *inout;
     inout = A;
     for (i = 0; i < m; i = i + 1, inout = inout + dist, W = W + 7) {
	  FFTW_REAL tre0_0_0;
	  FFTW_REAL tim0_0_0;
	  FFTW_REAL tre0_0_1;
	  FFTW_REAL tim0_0_1;
	  FFTW_REAL tre0_0_2;
	  FFTW_REAL tim0_0_2;
	  FFTW_REAL tre0_0_3;
	  FFTW_REAL tim0_0_3;
	  FFTW_REAL tre0_1_0;
	  FFTW_REAL tim0_1_0;
	  FFTW_REAL tre0_1_1;
	  FFTW_REAL tim0_1_1;
	  FFTW_REAL tre0_1_2;
	  FFTW_REAL tim0_1_2;
	  FFTW_REAL tre0_1_3;
	  FFTW_REAL tim0_1_3;
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       tre1_0_0 = c_re(inout[0]);
	       tim1_0_0 = c_im(inout[0]);
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[4 * stride]);
		    ti = c_im(inout[4 * stride]);
		    twr = c_re(W[3]);
		    twi = c_im(W[3]);
		    tre1_1_0 = (tr * twr) + (ti * twi);
		    tim1_1_0 = (ti * twr) - (tr * twi);
	       }
	       tre0_0_0 = tre1_0_0 + tre1_1_0;
	       tim0_0_0 = tim1_0_0 + tim1_1_0;
	       tre0_1_0 = tre1_0_0 - tre1_1_0;
	       tim0_1_0 = tim1_0_0 - tim1_1_0;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[stride]);
		    ti = c_im(inout[stride]);
		    twr = c_re(W[0]);
		    twi = c_im(W[0]);
		    tre1_0_0 = (tr * twr) + (ti * twi);
		    tim1_0_0 = (ti * twr) - (tr * twi);
	       }
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[5 * stride]);
		    ti = c_im(inout[5 * stride]);
		    twr = c_re(W[4]);
		    twi = c_im(W[4]);
		    tre1_1_0 = (tr * twr) + (ti * twi);
		    tim1_1_0 = (ti * twr) - (tr * twi);
	       }
	       tre0_0_1 = tre1_0_0 + tre1_1_0;
	       tim0_0_1 = tim1_0_0 + tim1_1_0;
	       tre0_1_1 = tre1_0_0 - tre1_1_0;
	       tim0_1_1 = tim1_0_0 - tim1_1_0;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[2 * stride]);
		    ti = c_im(inout[2 * stride]);
		    twr = c_re(W[1]);
		    twi = c_im(W[1]);
		    tre1_0_0 = (tr * twr) + (ti * twi);
		    tim1_0_0 = (ti * twr) - (tr * twi);
	       }
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[6 * stride]);
		    ti = c_im(inout[6 * stride]);
		    twr = c_re(W[5]);
		    twi = c_im(W[5]);
		    tre1_1_0 = (tr * twr) + (ti * twi);
		    tim1_1_0 = (ti * twr) - (tr * twi);
	       }
	       tre0_0_2 = tre1_0_0 + tre1_1_0;
	       tim0_0_2 = tim1_0_0 + tim1_1_0;
	       tre0_1_2 = tre1_0_0 - tre1_1_0;
	       tim0_1_2 = tim1_0_0 - tim1_1_0;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[3 * stride]);
		    ti = c_im(inout[3 * stride]);
		    twr = c_re(W[2]);
		    twi = c_im(W[2]);
		    tre1_0_0 = (tr * twr) + (ti * twi);
		    tim1_0_0 = (ti * twr) - (tr * twi);
	       }
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[7 * stride]);
		    ti = c_im(inout[7 * stride]);
		    twr = c_re(W[6]);
		    twi = c_im(W[6]);
		    tre1_1_0 = (tr * twr) + (ti * twi);
		    tim1_1_0 = (ti * twr) - (tr * twi);
	       }
	       tre0_0_3 = tre1_0_0 + tre1_1_0;
	       tim0_0_3 = tim1_0_0 + tim1_1_0;
	       tre0_1_3 = tre1_0_0 - tre1_1_0;
	       tim0_1_3 = tim1_0_0 - tim1_1_0;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       tre1_0_0 = tre0_0_0 + tre0_0_2;
	       tim1_0_0 = tim0_0_0 + tim0_0_2;
	       tre1_1_0 = tre0_0_0 - tre0_0_2;
	       tim1_1_0 = tim0_0_0 - tim0_0_2;
	       tre1_0_1 = tre0_0_1 + tre0_0_3;
	       tim1_0_1 = tim0_0_1 + tim0_0_3;
	       tre1_1_1 = tre0_0_1 - tre0_0_3;
	       tim1_1_1 = tim0_0_1 - tim0_0_3;
	       c_re(inout[0]) = tre1_0_0 + tre1_0_1;
	       c_im(inout[0]) = tim1_0_0 + tim1_0_1;
	       c_re(inout[4 * stride]) = tre1_0_0 - tre1_0_1;
	       c_im(inout[4 * stride]) = tim1_0_0 - tim1_0_1;
	       c_re(inout[2 * stride]) = tre1_1_0 - tim1_1_1;
	       c_im(inout[2 * stride]) = tim1_1_0 + tre1_1_1;
	       c_re(inout[6 * stride]) = tre1_1_0 + tim1_1_1;
	       c_im(inout[6 * stride]) = tim1_1_0 - tre1_1_1;
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_0_1;
	       FFTW_REAL tim1_0_1;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_1_1;
	       FFTW_REAL tim1_1_1;
	       tre1_0_0 = tre0_1_0 - tim0_1_2;
	       tim1_0_0 = tim0_1_0 + tre0_1_2;
	       tre1_1_0 = tre0_1_0 + tim0_1_2;
	       tim1_1_0 = tim0_1_0 - tre0_1_2;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tre2_1_0;
		    FFTW_REAL tim2_1_0;
		    tre2_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_1_1 - tim0_1_1);
		    tim2_0_0 = ((FFTW_REAL) FFTW_K707106781) * (tim0_1_1 + tre0_1_1);
		    tre2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_1_3 + tim0_1_3);
		    tim2_1_0 = ((FFTW_REAL) FFTW_K707106781) * (tre0_1_3 - tim0_1_3);
		    tre1_0_1 = tre2_0_0 - tre2_1_0;
		    tim1_0_1 = tim2_0_0 + tim2_1_0;
		    tre1_1_1 = tre2_0_0 + tre2_1_0;
		    tim1_1_1 = tim2_0_0 - tim2_1_0;
	       }
	       c_re(inout[stride]) = tre1_0_0 + tre1_0_1;
	       c_im(inout[stride]) = tim1_0_0 + tim1_0_1;
	       c_re(inout[5 * stride]) = tre1_0_0 - tre1_0_1;
	       c_im(inout[5 * stride]) = tim1_0_0 - tim1_0_1;
	       c_re(inout[3 * stride]) = tre1_1_0 - tim1_1_1;
	       c_im(inout[3 * stride]) = tim1_1_0 + tre1_1_1;
	       c_re(inout[7 * stride]) = tre1_1_0 + tim1_1_1;
	       c_im(inout[7 * stride]) = tim1_1_0 - tre1_1_1;
	  }
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* This file has been automatically generated --- DO NOT EDIT */

#include "fftw.h"
#include "konst.h"

/* Generated by $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

/* This function contains 108 FP additions and 72 FP multiplications */

void fftwi_twiddle_9(FFTW_COMPLEX *A, const FFTW_COMPLEX *W, int stride, int m, int dist)
{
     int i;
     COMPLEX *inout;
     inout = A;
     for (i = 0; i < m; i = i + 1, inout = inout + dist, W = W + 8) {
	  FFTW_REAL tre0_0_0;
	  FFTW_REAL tim0_0_0;
	  FFTW_REAL tre0_0_1;
	  FFTW_REAL tim0_0_1;
	  FFTW_REAL tre0_0_2;
	  FFTW_REAL tim0_0_2;
	  FFTW_REAL tre0_1_0;
	  FFTW_REAL tim0_1_0;
	  FFTW_REAL tre0_1_1;
	  FFTW_REAL tim0_1_1;
	  FFTW_REAL tre0_1_2;
	  FFTW_REAL tim0_1_2;
	  FFTW_REAL tre0_2_0;
	  FFTW_REAL tim0_2_0;
	  FFTW_REAL tre0_2_1;
	  FFTW_REAL tim0_2_1;
	  FFTW_REAL tre0_2_2;
	  FFTW_REAL tim0_2_2;
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_2_0;
	       FFTW_REAL tim1_2_0;
	       tre1_0_0 = c_re(inout[0]);
	       tim1_0_0 = c_im(inout[0]);
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[3 * stride]);
		    ti = c_im(inout[3 * stride]);
		    twr = c_re(W[2]);
		    twi = c_im(W[2]);
		    tre1_1_0 = (tr * twr) + (ti * twi);
		    tim1_1_0 = (ti * twr) - (tr * twi);
	       }
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[6 * stride]);
		    ti = c_im(inout[6 * stride]);
		    twr = c_re(W[5]);
		    twi = c_im(W[5]);
		    tre1_2_0 = (tr * twr) + (ti * twi);
		    tim1_2_0 = (ti * twr) - (tr * twi);
	       }
	       tre0_0_0 = tre1_0_0 + tre1_1_0 + tre1_2_0;
	       tim0_0_0 = tim1_0_0 + tim1_1_0 + tim1_2_0;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tre2_1_0;
		    tre2_0_0 = tre1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tre1_1_0 + tre1_2_0));
		    tre2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tim1_2_0 - tim1_1_0);
		    tre0_1_0 = tre2_0_0 + tre2_1_0;
		    tre0_2_0 = tre2_0_0 - tre2_1_0;
	       }
	       {
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tim2_1_0;
		    tim2_0_0 = tim1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tim1_1_0 + tim1_2_0));
		    tim2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tre1_1_0 - tre1_2_0);
		    tim0_1_0 = tim2_0_0 + tim2_1_0;
		    tim0_2_0 = tim2_0_0 - tim2_1_0;
	       }
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_2_0;
	       FFTW_REAL tim1_2_0;
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[stride]);
		    ti = c_im(inout[stride]);
		    twr = c_re(W[0]);
		    twi = c_im(W[0]);
		    tre1_0_0 = (tr * twr) + (ti * twi);
		    tim1_0_0 = (ti * twr) - (tr * twi);
	       }
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[4 * stride]);
		    ti = c_im(inout[4 * stride]);
		    twr = c_re(W[3]);
		    twi = c_im(W[3]);
		    tre1_1_0 = (tr * twr) + (ti * twi);
		    tim1_1_0 = (ti * twr) - (tr * twi);
	       }
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[7 * stride]);
		    ti = c_im(inout[7 * stride]);
		    twr = c_re(W[6]);
		    twi = c_im(W[6]);
		    tre1_2_0 = (tr * twr) + (ti * twi);
		    tim1_2_0 = (ti * twr) - (tr * twi);
	       }
	       tre0_0_1 = tre1_0_0 + tre1_1_0 + tre1_2_0;
	       tim0_0_1 = tim1_0_0 + tim1_1_0 + tim1_2_0;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tre2_1_0;
		    tre2_0_0 = tre1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tre1_1_0 + tre1_2_0));
		    tre2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tim1_2_0 - tim1_1_0);
		    tre0_1_1 = tre2_0_0 + tre2_1_0;
		    tre0_2_1 = tre2_0_0 - tre2_1_0;
	       }
	       {
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tim2_1_0;
		    tim2_0_0 = tim1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tim1_1_0 + tim1_2_0));
		    tim2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tre1_1_0 - tre1_2_0);
		    tim0_1_1 = tim2_0_0 + tim2_1_0;
		    tim0_2_1 = tim2_0_0 - tim2_1_0;
	       }
	  }
	  {
	       FFTW_REAL tre1_0_0;
	       FFTW_REAL tim1_0_0;
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_2_0;
	       FFTW_REAL tim1_2_0;
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[2 * stride]);
		    ti = c_im(inout[2 * stride]);
		    twr = c_re(W[1]);
		    twi = c_im(W[1]);
		    tre1_0_0 = (tr * twr) + (ti * twi);
		    tim1_0_0 = (ti * twr) - (tr * twi);
	       }
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[5 * stride]);
		    ti = c_im(inout[5 * stride]);
		    twr = c_re(W[4]);
		    twi = c_im(W[4]);
		    tre1_1_0 = (tr * twr) + (ti * twi);
		    tim1_1_0 = (ti * twr) - (tr * twi);
	       }
	       {
		    FFTW_REAL tr;
		    FFTW_REAL ti;
		    FFTW_REAL twr;
		    FFTW_REAL twi;
		    tr = c_re(inout[8 * stride]);
		    ti = c_im(inout[8 * stride]);
		    twr = c_re(W[7]);
		    twi = c_im(W[7]);
		    tre1_2_0 = (tr * twr) + (ti * twi);
		    tim1_2_0 = (ti * twr) - (tr * twi);
	       }
	       tre0_0_2 = tre1_0_0 + tre1_1_0 + tre1_2_0;
	       tim0_0_2 = tim1_0_0 + tim1_1_0 + tim1_2_0;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tre2_1_0;
		    tre2_0_0 = tre1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tre1_1_0 + tre1_2_0));
		    tre2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tim1_2_0 - tim1_1_0);
		    tre0_1_2 = tre2_0_0 + tre2_1_0;
		    tre0_2_2 = tre2_0_0 - tre2_1_0;
	       }
	       {
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tim2_1_0;
		    tim2_0_0 = tim1_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tim1_1_0 + tim1_2_0));
		    tim2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tre1_1_0 - tre1_2_0);
		    tim0_1_2 = tim2_0_0 + tim2_1_0;
		    tim0_2_2 = tim2_0_0 - tim2_1_0;
	       }
	  }
	  c_re(inout[0]) = tre0_0_0 + tre0_0_1 + tre0_0_2;
	  c_im(inout[0]) = tim0_0_0 + tim0_0_1 + tim0_0_2;
	  {
	       FFTW_REAL tre2_0_0;
	       FFTW_REAL tre2_1_0;
	       tre2_0_0 = tre0_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tre0_0_1 + tre0_0_2));
	       tre2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tim0_0_2 - tim0_0_1);
	       c_re(inout[3 * stride]) = tre2_0_0 + tre2_1_0;
	       c_re(inout[6 * stride]) = tre2_0_0 - tre2_1_0;
	  }
	  {
	       FFTW_REAL tim2_0_0;
	       FFTW_REAL tim2_1_0;
	       tim2_0_0 = tim0_0_0 - (((FFTW_REAL) FFTW_K499999999) * (tim0_0_1 + tim0_0_2));
	       tim2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tre0_0_1 - tre0_0_2);
	       c_im(inout[3 * stride]) = tim2_0_0 + tim2_1_0;
	       c_im(inout[6 * stride]) = tim2_0_0 - tim2_1_0;
	  }
	  {
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_2_0;
	       FFTW_REAL tim1_2_0;
	       tre1_1_0 = (((FFTW_REAL) FFTW_K766044443) * tre0_1_1) - (((FFTW_REAL) FFTW_K642787609) * tim0_1_1);
	       tim1_1_0 = (((FFTW_REAL) FFTW_K766044443) * tim0_1_1) + (((FFTW_REAL) FFTW_K642787609) * tre0_1_1);
	       tre1_2_0 = (((FFTW_REAL) FFTW_K173648177) * tre0_1_2) - (((FFTW_REAL) FFTW_K984807753) * tim0_1_2);
	       tim1_2_0 = (((FFTW_REAL) FFTW_K173648177) * tim0_1_2) + (((FFTW_REAL) FFTW_K984807753) * tre0_1_2);
	       c_re(inout[stride]) = tre0_1_0 + tre1_1_0 + tre1_2_0;
	       c_im(inout[stride]) = tim0_1_0 + tim1_1_0 + tim1_2_0;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tre2_1_0;
		    tre2_0_0 = tre0_1_0 - (((FFTW_REAL) FFTW_K499999999) * (tre1_1_0 + tre1_2_0));
		    tre2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tim1_2_0 - tim1_1_0);
		    c_re(inout[4 * stride]) = tre2_0_0 + tre2_1_0;
		    c_re(inout[7 * stride]) = tre2_0_0 - tre2_1_0;
	       }
	       {
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tim2_1_0;
		    tim2_0_0 = tim0_1_0 - (((FFTW_REAL) FFTW_K499999999) * (tim1_1_0 + tim1_2_0));
		    tim2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tre1_1_0 - tre1_2_0);
		    c_im(inout[4 * stride]) = tim2_0_0 + tim2_1_0;
		    c_im(inout[7 * stride]) = tim2_0_0 - tim2_1_0;
	       }
	  }
	  {
	       FFTW_REAL tre1_1_0;
	       FFTW_REAL tim1_1_0;
	       FFTW_REAL tre1_2_0;
	       FFTW_REAL tim1_2_0;
	       tre1_1_0 = (((FFTW_REAL) FFTW_K173648177) * tre0_2_1) - (((FFTW_REAL) FFTW_K984807753) * tim0_2_1);
	       tim1_1_0 = (((FFTW_REAL) FFTW_K173648177) * tim0_2_1) + (((FFTW_REAL) FFTW_K984807753) * tre0_2_1);
	       tre1_2_0 = (((FFTW_REAL) FFTW_K939692620) * tre0_2_2) + (((FFTW_REAL) FFTW_K342020143) * tim0_2_2);
	       tim1_2_0 = (((FFTW_REAL) FFTW_K342020143) * tre0_2_2) - (((FFTW_REAL) FFTW_K939692620) * tim0_2_2);
	       c_re(inout[2 * stride]) = tre0_2_0 + tre1_1_0 - tre1_2_0;
	       c_im(inout[2 * stride]) = tim0_2_0 + tim1_1_0 + tim1_2_0;
	       {
		    FFTW_REAL tre2_0_0;
		    FFTW_REAL tre2_1_0;
		    tre2_0_0 = tre0_2_0 + (((FFTW_REAL) FFTW_K499999999) * (tre1_2_0 - tre1_1_0));
		    tre2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tim1_2_0 - tim1_1_0);
		    c_re(inout[5 * stride]) = tre2_0_0 + tre2_1_0;
		    c_re(inout[8 * stride]) = tre2_0_0 - tre2_1_0;
	       }
	       {
		    FFTW_REAL tim2_0_0;
		    FFTW_REAL tim2_1_0;
		    tim2_0_0 = tim0_2_0 - (((FFTW_REAL) FFTW_K499999999) * (tim1_1_0 + tim1_2_0));
		    tim2_1_0 = ((FFTW_REAL) FFTW_K866025403) * (tre1_1_0 + tre1_2_0);
		    c_im(inout[5 * stride]) = tim2_0_0 + tim2_1_0;
		    c_im(inout[8 * stride]) = tim2_0_0 - tim2_1_0;
	       }
	  }
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/*
 * generic.c -- "generic" solvers.  They work for all
 * n (and are slow)
 */
#include "fftw.h"
#include <math.h>
#include <stdlib.h>

void fftw_twiddle_generic(FFTW_COMPLEX *A, const FFTW_COMPLEX *W,
			  int m, int r, int n, int stride)
{
     int i, j, k;
     const FFTW_COMPLEX *jp;
     FFTW_COMPLEX *kp;
     FFTW_COMPLEX *tmp = (FFTW_COMPLEX *)
     fftw_malloc(r * sizeof(FFTW_COMPLEX));

     for (i = 0; i < m; ++i) {
	  for (k = 0, kp = tmp; k < r; ++k, kp++) {
	       FFTW_REAL r0, i0, rt, it, rw, iw;
	       int l1 = i + m * k;
	       int l0;

	       r0 = i0 = 0.0;
	       for (j = 0, jp = A + i * stride, l0 = 0; j < r; ++j,
		    jp += m * stride) {
		    rw = c_re(W[l0]);
		    iw = c_im(W[l0]);
		    rt = c_re(*jp);
		    it = c_im(*jp);
		    r0 += rt * rw - it * iw;
		    i0 += rt * iw + it * rw;
		    l0 += l1;
		    if (l0 > n)
			 l0 -= n;
	       }
	       c_re(*kp) = r0;
	       c_im(*kp) = i0;
	  }
	  for (k = 0, kp = A + i * stride; k < r; ++k, kp += m * stride)
	       *kp = tmp[k];
     }

     fftw_free(tmp);
}

void fftwi_twiddle_generic(FFTW_COMPLEX *A, const FFTW_COMPLEX *W,
			   int m, int r, int n, int stride)
{
     int i, j, k;
     const FFTW_COMPLEX *jp;
     FFTW_COMPLEX *kp;
     FFTW_COMPLEX *tmp = (FFTW_COMPLEX *)
     fftw_malloc(r * sizeof(FFTW_COMPLEX));

     for (i = 0; i < m; ++i) {
	  for (k = 0, kp = tmp; k < r; ++k, kp++) {
	       FFTW_REAL r0, i0, rt, it, rw, iw;
	       int l1 = i + m * k;
	       int l0;

	       r0 = i0 = 0.0;
	       for (j = 0, jp = A + i * stride, l0 = 0; j < r; ++j,
		    jp += m * stride) {
		    rw = c_re(W[l0]);
		    iw = c_im(W[l0]);
		    rt = c_re(*jp);
		    it = c_im(*jp);
		    r0 += rt * rw + it * iw;
		    i0 += it * rw - rt * iw;
		    l0 += l1;
		    if (l0 > n)
			 l0 -= n;
	       }
	       c_re(*kp) = r0;
	       c_im(*kp) = i0;
	  }
	  for (k = 0, kp = A + i * stride; k < r; ++k, kp += m * stride)
	       *kp = tmp[k];
     }

     fftw_free(tmp);
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 *
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 *
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *
 */

/*
 * malloc.c -- memory allocation related functions
 */

/* $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */
#if defined FFTW_USING_CILK
#include <cilk.h>
#include <cilk-compat.h>
#endif

#include "fftw.h"
#include <stdio.h>
#include <stdlib.h>

int fftw_malloc_cnt = 0;
void *(*fftw_malloc_hook) (size_t n) = (void *(*)(size_t n)) 0;
void (*fftw_free_hook) (void *p) = (void (*)(void *p)) 0;

#define FFTW_MALLOC_DEBUG 0
/* sorry for this debugging hack ... */
#define COMMA ,

#if FFTW_MALLOC_DEBUG
#define WHEN_DEBUG(a) a

/*
 * debugging malloc/free.  Initialize every malloced and freed area to
 * random values, just to make sure we are not using uninitialized
 * pointers.  Also check for writes past the ends of allocated blocks,
 * and a couple of other things.
 *
 * This code is a quick and dirty hack -- use at your own risk.
 */

int fftw_malloc_total = 0;

#define MAGIC 0xABadCafe
#define PAD_FACTOR 2
#define TWOINTS (2 * sizeof(int))

#define VERBOSE_ALLOCATION 0

#if VERBOSE_ALLOCATION
#define WHEN_VERBOSE(a) a
#else
#define WHEN_VERBOSE(a) 
#endif

void *fftw_malloc(size_t n)
{
     char *p;
     int i;

     WHEN_VERBOSE({
	  printf("FFTW_MALLOC %d\n",n);
	  fflush(stdout);
     })

     if (n == 0)
	  fftw_die("Tried to allocate a block of zero size!\n");

     fftw_malloc_total += n;

     p = (char *) malloc(PAD_FACTOR*n + TWOINTS);
     if (!p)
	  fftw_die("fftw_malloc: out of memory\n");

     /* store the size in a known position */
     ((int *) p)[0] = n;
     ((int *) p)[1] = MAGIC;
     for (i = 0; i < PAD_FACTOR*n; ++i)
	  p[i + TWOINTS] = (char) (i ^ 0xDEADBEEF);

     ++fftw_malloc_cnt;

     /* skip the size we stored previously */
     return (void *) (p + TWOINTS);
}

void fftw_free(void *p)
{
     char *q = ((char *) p) - TWOINTS;

     if (!p)
	  fftw_die("fftw_free: tried to free NULL pointer!\n");

     if (!q)
	  fftw_die("fftw_free: tried to free NULL+TWOINTS pointer!\n");

     {
	  int n = ((int *) q)[0];
	  int magic = ((int *) q)[1];
	  int i;
	  
	  WHEN_VERBOSE({
	       printf("FFTW_FREE %d\n",n);
	       fflush(stdout);
	  })
	  
	  if (n == 0)
	       fftw_die("Tried to free a freed pointer!\n");
	  *((int *) q) = 0; /* set to zero to detect duplicate free's */
	  
	  if (magic != MAGIC)
	       fftw_die("Wrong magic in fftw_free()!\n");	       
	  ((int *) q)[1] = ~MAGIC;

	  if (n < 0)
	       fftw_die("Tried to free block with corrupt size descriptor!\n");
	  
	  fftw_malloc_total -= n;
	  
	  if (fftw_malloc_total < 0)
	       fftw_die("fftw_malloc_total went negative!\n");
	  
	  /* check for writing past end of array: */
	  for (i = n; i < PAD_FACTOR*n; ++i)
	       if (q[i+TWOINTS] != (char) (i ^ 0xDEADBEEF)) {
		    fprintf(stderr, "Byte %d past end of array has changed!\n",
			    i - n + 1);
		    fftw_die("Array bounds overwritten!\n");
	       }
	  
	  for (i = 0; i < PAD_FACTOR*n; ++i)
	       q[i + TWOINTS] = (char) (i ^ 0xBEEFDEAD);

	  --fftw_malloc_cnt;
	  free(q);
     }
}

#else				/* production version, no hacks */
#define WHEN_DEBUG(a) 

void *fftw_malloc(size_t n)
{
     void *p;

     if (fftw_malloc_hook)
	  return fftw_malloc_hook(n);

     if (n == 0)
	  n = 1;

     p = malloc(n);

     if (!p)
	  fftw_die("fftw_malloc: out of memory\n");

     return p;
}

void fftw_free(void *p)
{
     if (p) {
	  if (fftw_free_hook) {
	       fftw_free_hook(p);
	       return;
	  }
	  free(p);
     }
}

#endif

/* die when fatal errors occur */
void fftw_die(char *s)
{
     fprintf(stderr, "%s", s);
     exit(1);
}

/* check for memory leaks when debugging */
void fftw_check_memory_leaks(void)
{
     extern int fftw_node_cnt, fftw_plan_cnt, fftw_twiddle_size;

     if (WHEN_DEBUG(fftw_malloc_cnt ||)
	 WHEN_DEBUG(fftw_malloc_total ||)
	 fftw_node_cnt || fftw_plan_cnt || fftw_twiddle_size) {
	  fprintf(stderr,
		  "MEMORY LEAK!!!\n"
		  WHEN_DEBUG("fftw_malloc = %d")
		  " node=%d plan=%d twiddle=%d\n"
		  WHEN_DEBUG("fftw_malloc_total = %d\n"), 
		  WHEN_DEBUG(fftw_malloc_cnt COMMA)
		  fftw_node_cnt, fftw_plan_cnt, fftw_twiddle_size
		  WHEN_DEBUG(COMMA fftw_malloc_total));
	  exit(1);
     }
}

/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/* $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */
#include "fftw.h"
#include <math.h>

/*
 * Naive O(n^2) algorithm, used for testing purposes
 */
void fftw_naive(int n, FFTW_COMPLEX *in, FFTW_COMPLEX *out)
{
     int i, j;
     FFTW_COMPLEX sum;
     FFTW_COMPLEX w;
     FFTW_REAL pi = 3.1415926535897932384626434;

     for (j = 0; j < n; ++j) {
	  c_re(sum) = c_im(sum) = 0.0;
	  for (i = 0; i < n; ++i) {
	       c_re(w) = cos((2.0 * pi * (i * j % n)) / n);
	       c_im(w) = -sin((2.0 * pi * (i * j % n)) / n);
	       c_re(sum) += c_re(in[i]) * c_re(w) - c_im(in[i]) * c_im(w);
	       c_im(sum) += c_im(in[i]) * c_re(w) + c_re(in[i]) * c_im(w);
	  }
	  out[j] = sum;
     }
     return;
}

/*
 * Naive O(n^2) algorithm, for the inverse.
 */
void fftwi_naive(int n, FFTW_COMPLEX *in, FFTW_COMPLEX *out)
{
     int i, j;
     FFTW_COMPLEX sum;
     FFTW_COMPLEX w;
     FFTW_REAL pi = 3.1415926535897932384626434;

     for (j = 0; j < n; ++j) {
	  c_re(sum) = c_im(sum) = 0.0;
	  for (i = 0; i < n; ++i) {
	       c_re(w) = cos((2.0 * pi * (i * j % n)) / n);
	       c_im(w) = sin((2.0 * pi * (i * j % n)) / n);
	       c_re(sum) += c_re(in[i]) * c_re(w) - c_im(in[i]) * c_im(w);
	       c_im(sum) += c_im(in[i]) * c_re(w) + c_re(in[i]) * c_im(w);
	  }
	  out[j] = sum;
     }
     return;
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/*
 * planner.c -- find the optimal plan
 */

/* $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */
#if defined FFTW_USING_CILK
#include <cilk.h>
#include <cilk-compat.h>
#endif

#include "fftw.h"
#include <stdlib.h>
#include <stdio.h>

int fftw_node_cnt = 0;
int fftw_plan_cnt = 0;

#define NOTW_OPTIMAL_SIZE 32
#define TWIDDLE_OPTIMAL_SIZE 12

/* wisdom prototypes */
extern int fftw_wisdom_lookup(int n, int flags, fftw_direction dir,
			    enum fftw_node_type *type,
			    int *signature, int replace_p);
extern void fftw_wisdom_add(int n, int flags, fftw_direction dir,
			  enum fftw_node_type type,
			  int signature);

/* constructors --- I wish I had ML */
static fftw_plan_node *make_node(void)
{
     fftw_plan_node *p = (fftw_plan_node *)
     fftw_malloc(sizeof(fftw_plan_node));
     p->refcnt = 0;
     fftw_node_cnt++;
     return p;
}

static void use_node(fftw_plan_node *p)
{
     ++p->refcnt;
}

static fftw_plan_node *make_node_notw(int size, notw_codelet *codelet)
{
     fftw_plan_node *p = make_node();

     p->type = FFTW_NOTW;
     p->nodeu.notw.size = size;
     p->nodeu.notw.codelet = codelet;
     return p;
}

static fftw_plan_node *make_node_twiddle(int n, int size, twiddle_codelet *codelet,
					 fftw_plan_node *recurse,
					 int flags)
{
     fftw_plan_node *p = make_node();

     p->type = FFTW_TWIDDLE;
     p->nodeu.twiddle.size = size;
     p->nodeu.twiddle.codelet = codelet;
     p->nodeu.twiddle.recurse = recurse;
     use_node(recurse);
     if (flags & FFTW_MEASURE)
	  p->nodeu.twiddle.tw = fftw_create_twiddle(n, size, n / size);
     else
	  p->nodeu.twiddle.tw = 0;
     return p;
}

static fftw_plan_node *make_node_generic(int n, int size,
					 generic_codelet *codelet,
					 fftw_plan_node *recurse,
					 int flags)
{
     fftw_plan_node *p = make_node();

     p->type = FFTW_GENERIC;
     p->nodeu.generic.size = size;
     p->nodeu.generic.codelet = codelet;
     p->nodeu.generic.recurse = recurse;
     use_node(recurse);

     if (flags & FFTW_MEASURE)
	  p->nodeu.generic.tw = fftw_create_twiddle(n, 2, n);
     else
	  p->nodeu.generic.tw = 0;
     return p;
}

static void destroy_tree(fftw_plan_node *p)
{
     if (p) {
	  --p->refcnt;
	  if (p->refcnt == 0) {
	       switch (p->type) {
		   case FFTW_NOTW:
			break;

		   case FFTW_TWIDDLE:
			if (p->nodeu.twiddle.tw)
			     fftw_destroy_twiddle(p->nodeu.twiddle.tw);
			destroy_tree(p->nodeu.twiddle.recurse);
			break;

		   case FFTW_GENERIC:
			if (p->nodeu.generic.tw)
			     fftw_destroy_twiddle(p->nodeu.generic.tw);
			destroy_tree(p->nodeu.generic.recurse);
			break;
	       }

	       fftw_free(p);
	       fftw_node_cnt--;
	  }
     }
}

/* create a plan with twiddle factors, and other bells and whistles */
static fftw_plan make_plan(int n, fftw_direction dir,
			   fftw_plan_node *root, int flags,
			   enum fftw_node_type wisdom_type,
			   int wisdom_signature)
{
     fftw_plan p = (fftw_plan) fftw_malloc(sizeof(struct fftw_plan_struct));

     p->n = n;
     p->dir = dir;
     p->flags = flags;
     use_node(root);
     p->root = root;
     p->cost = 0.0;
     p->wisdom_type = wisdom_type;
     p->wisdom_signature = wisdom_signature;
     p->next = (fftw_plan) 0;
     p->refcnt = 0;
     fftw_plan_cnt++;
     return p;
}

/*
 * complete with twiddle factors (because nodes don't have
 * them when FFTW_ESTIMATE is set)
 */
static void complete_twiddle(fftw_plan_node *p, int n)
{
     int r;
     switch (p->type) {
	 case FFTW_NOTW:
	      break;

	 case FFTW_TWIDDLE:
	      r = p->nodeu.twiddle.size;
	      if (!p->nodeu.twiddle.tw)
		   p->nodeu.twiddle.tw = fftw_create_twiddle(n, r, n / r);
	      complete_twiddle(p->nodeu.twiddle.recurse, n / r);
	      break;

	 case FFTW_GENERIC:
	      r = p->nodeu.generic.size;
	      if (!p->nodeu.generic.tw)
		   p->nodeu.generic.tw = fftw_create_twiddle(n, 2, n);
	      complete_twiddle(p->nodeu.generic.recurse, n / r);
	      break;
     }
}

static void use_plan(fftw_plan p)
{
     ++p->refcnt;
}

static void destroy_plan(fftw_plan p)
{
     --p->refcnt;

     if (p->refcnt == 0) {
	  destroy_tree(p->root);
	  fftw_plan_cnt--;
	  fftw_free(p);
     }
}

/* end of constructors */

/* management of plan tables */
static void make_empty_table(fftw_plan *table)
{
     *table = (fftw_plan) 0;
}

static void insert(fftw_plan *table, fftw_plan this_plan, int n)
{
     use_plan(this_plan);
     this_plan->n = n;
     this_plan->next = *table;
     *table = this_plan;
}

static fftw_plan lookup(fftw_plan *table, int n, int flags)
{
     fftw_plan p;

     for (p = *table; p &&
	  ((p->n != n) || (p->flags != flags)); p = p->next);

     return p;
}

static void destroy_table(fftw_plan *table)
{
     fftw_plan p, q;

     for (p = *table; p; p = q) {
	  q = p->next;
	  destroy_plan(p);
     }
}

static double estimate_node(fftw_plan_node *p)
{
     int k;

     switch (p->type) {
	 case FFTW_NOTW:
	      k = p->nodeu.notw.size;
	      return 1.0 + 0.1 * (k - NOTW_OPTIMAL_SIZE) *
		  (k - NOTW_OPTIMAL_SIZE);

	 case FFTW_TWIDDLE:
	      k = p->nodeu.twiddle.size;
	      return 1.0 + 0.1 * (k - TWIDDLE_OPTIMAL_SIZE) *
		  (k - TWIDDLE_OPTIMAL_SIZE)
		  + estimate_node(p->nodeu.twiddle.recurse);

	 case FFTW_GENERIC:
	      k = p->nodeu.generic.size;
	      return 10.0 + k * k
		  + estimate_node(p->nodeu.generic.recurse);
     }
     return 1.0E20;
}

/* auxiliary functions */
static void compute_cost(fftw_plan plan)
{
     if (plan->flags & FFTW_MEASURE)
	  plan->cost = fftw_measure_runtime(plan);
     else {
	  double c;
	  c = plan->n * estimate_node(plan->root);
	  plan->cost = c;
     }
}

/* pick the better of two plans and destroy the other one. */
static fftw_plan pick_better(fftw_plan p1, fftw_plan p2)
{
     if (!p1)
	  return p2;

     if (!p2)
	  return p1;

     if (p1->cost > p2->cost) {
	  destroy_plan(p1);
	  return p2;
     } else {
	  destroy_plan(p2);
	  return p1;
     }
}

/* find the smallest prime factor of n */
static int factor(int n)
{
     int r;

     /* try 2 */
     if ((n & 1) == 0)
	  return 2;

     /* try odd numbers up to sqrt(n) */
     for (r = 3; r * r <= n; r += 2)
	  if (n % r == 0)
	       return r;

     /* n is prime */
     return n;
}

/* 
 * Some macrology for the planner.  If you have to write
 * the same line of code twice, there must be some bug.
 */
#define NOTW_ITERATOR(p, dir)                                \
      config_notw *p =                                       \
	  p = (dir == FFTW_FORWARD ?                         \
	       fftw_config_notw : fftwi_config_notw)

#define TWIDDLE_ITERATOR(p, dir)                             \
      config_twiddle *p =                                    \
	  p = (dir == FFTW_FORWARD ?                         \
	       fftw_config_twiddle : fftwi_config_twiddle);

#define FORALL_NOTW(p)             \
	 for (; p->size; ++p) 

#define FORALL_TWIDDLE(p)          \
	 for (; p->size; ++p) 

/******************************************
 *      Recursive planner                 *
 ******************************************/
fftw_plan planner(fftw_plan *table, int n, fftw_direction dir, int flags);

/*
 * the planner consists of two parts: one that tries to
 * use accumulated wisdom, and one that does not.
 * A small driver invokes both parts in sequence
 */

/* planner with wisdom: look up the codelet suggested by the wisdom */
fftw_plan planner_wisdom(fftw_plan *table, int n,
			 fftw_direction dir, int flags)
{
     fftw_plan best = (fftw_plan) 0;
     fftw_plan_node *node;
     int have_wisdom;
     enum fftw_node_type wisdom_type;
     int wisdom_signature;

     /* see if we remember any wisdom for this case */
     have_wisdom = fftw_wisdom_lookup(n, flags, dir, 
				      &wisdom_type, &wisdom_signature, 0);

     if (!have_wisdom)
	  return best;

     if (wisdom_type == FFTW_NOTW) {
	  NOTW_ITERATOR(p, dir);
	       
	  FORALL_NOTW(p) {
	       /* see if wisdom applies */
	       if (wisdom_signature == p->signature &&
		   p->size == n) {
		    node = make_node_notw(n, p->codelet);
		    best = make_plan(n, dir, node, flags,
				     FFTW_NOTW, p->signature);
		    use_plan(best);
		    return best;
	       }
	  }
     }
	  
     if (wisdom_type == FFTW_TWIDDLE) {
	  TWIDDLE_ITERATOR(p, dir);
	       
	  FORALL_TWIDDLE(p) {
	       /* see if wisdom applies */
	       if (wisdom_signature == p->signature &&
		   (n % p->size) == 0) {
		    fftw_plan r = planner(table, n / p->size, dir, flags);
		    node = make_node_twiddle(n, p->size, p->codelet,
					     r->root, flags);
		    best = make_plan(n, dir, node, flags,
				     FFTW_TWIDDLE, p->signature);
		    use_plan(best);
		    destroy_plan(r);
		    return best;
	       }
	  }
     }

     /* 
      * BUG (or: TODO)  Can we have generic wisdom? This is probably
      * an academic question
      */

     return best;
}

/*
 * planner with no wisdom: try all combinations and pick
 * the best
 */
fftw_plan planner_normal(fftw_plan *table, int n, fftw_direction dir,
			   int flags)
{
     fftw_plan best = (fftw_plan) 0;
     fftw_plan newplan;
     fftw_plan_node *node;

     /* see if we have any codelet that solves the problem */
     {
	  NOTW_ITERATOR(p, dir);
	       
	  FORALL_NOTW(p) {
	       if (p->size == n) {
		    node = make_node_notw(n, p->codelet);
		    newplan = make_plan(n, dir, node, flags,
					FFTW_NOTW, p->signature);
		    use_plan(newplan);
		    compute_cost(newplan);
		    best = pick_better(newplan, best);
	       }
	  }
     }

     /* Then, try all available twiddle codelets */
     {
	  TWIDDLE_ITERATOR(p, dir);
	       
	  FORALL_TWIDDLE(p) {
	       if ((n % p->size) == 0 &&
		   (!best || n != p->size)) {
		    fftw_plan r = planner(table, n / p->size, dir, flags);
		    node = make_node_twiddle(n, p->size, p->codelet,
					     r->root, flags);
		    newplan = make_plan(n, dir, node, flags,
					FFTW_TWIDDLE, p->signature);
		    use_plan(newplan);
		    destroy_plan(r);
		    compute_cost(newplan);
		    best = pick_better(newplan, best);
	       }
	  }
     }

     /* 
      * if no plan has been found so far, resort to generic codelets 
      */
     if (!best) {
	  generic_codelet *codelet = (dir == FFTW_FORWARD ?
			   fftw_twiddle_generic : fftwi_twiddle_generic);
	  int size = factor(n);
	  fftw_plan r = planner(table, n / size, dir, flags);

	  node = make_node_generic(n, size, codelet, r->root, flags);
	  newplan = make_plan(n, dir, node, flags, FFTW_GENERIC, 0);
	  use_plan(newplan);
	  destroy_plan(r);
	  compute_cost(newplan);
	  best = pick_better(newplan, best);
     }

     return best;
}

fftw_plan planner(fftw_plan *table, int n, fftw_direction dir,
			   int flags)
{
     fftw_plan best = (fftw_plan) 0;

     /* see if plan has already been computed */
     best = lookup(table, n, flags);
     if (best) {
	  use_plan(best);
	  return best;
     }

     /* try a wise plan */
     best = planner_wisdom(table, n, dir, flags);

     if (!best) {
	  /* No wisdom.  Plan normally. */
	  best = planner_normal(table, n, dir, flags);
     }

     if (best) {
	  insert(table, best, n);

	  /* remember the wisdom */
	  fftw_wisdom_add(n, flags, dir, best->wisdom_type,
			  best->wisdom_signature);
     }

     return best;
}

fftw_plan fftw_create_plan(int n, fftw_direction dir, int flags)
{
     fftw_plan table;
     fftw_plan p1;

     /* validate parameters */
     if (n <= 0)
	  return (fftw_plan) 0;

     if ((dir != FFTW_FORWARD) && (dir != FFTW_BACKWARD))
	  return (fftw_plan) 0;

     make_empty_table(&table);
     p1 = planner(&table, n, dir, flags);
     destroy_table(&table);

     complete_twiddle(p1->root, n);
     return p1;
}

void fftw_destroy_plan(fftw_plan plan)
{
     destroy_plan(plan);
}

static void print_node(FILE * f, fftw_plan_node *p, int indent)
{
     if (p) {
	  switch (p->type) {
	      case FFTW_NOTW:
		   fprintf(f, "%*sFFTW_NOTW %d\n", indent, "",
			   p->nodeu.notw.size);
		   break;
	      case FFTW_TWIDDLE:
		   fprintf(f, "%*sFFTW_TWIDDLE %d\n", indent, "",
			   p->nodeu.twiddle.size);
		   print_node(f, p->nodeu.twiddle.recurse, indent);
		   break;
	      case FFTW_GENERIC:
		   fprintf(f, "%*sFFTW_GENERIC %d\n", indent, "",
			   p->nodeu.generic.size);
		   print_node(f, p->nodeu.generic.recurse, indent);
		   break;
	  }
     }
}

void fftw_fprint_plan(FILE * f, fftw_plan p)
{
     fprintf(f, "plan: (cost = %e)\n", p->cost);
     print_node(f, p->root, 0);
}

void fftw_print_plan(fftw_plan p)
{
     fftw_fprint_plan(stdout, p);
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/*
 * timer.c -- this file measures the execution time of 
 *            ffts.  This information is used by the planner.
 */

/* $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */

#include <time.h>
#include "fftw.h"
#include <math.h>
#include <stdlib.h>

/*
 * The timer keeps doubling the number of iterations
 * until the program runs for more than FFTW_TIME_MIN
 */
double fftw_measure_runtime(fftw_plan plan)
{
     FFTW_COMPLEX *in, *out;
     fftw_time begin, end;
     double t;
     int i, iter;
     int n;

     n = plan->n;

     iter = 1;

retry:
     in = (FFTW_COMPLEX *) fftw_malloc(n * sizeof(FFTW_COMPLEX));
     out = (FFTW_COMPLEX *) fftw_malloc(n * sizeof(FFTW_COMPLEX));

     begin = fftw_get_time();
     for (i = 0; i < iter; ++i) {
	  int j;

	  /* generate random inputs */
	  for (j = 0; j < n; ++j) {
	       c_re(in[j]) = 1.0;
	       c_im(in[j]) = 32.432;
	  }

	  fftw(plan, 1, in, 1, 0, out, 1, 0);
     }
     end = fftw_get_time();

     t = fftw_time_to_sec(fftw_time_diff(end,begin));

     fftw_free(in);
     fftw_free(out);

     if (t < FFTW_TIME_MIN) {
	  iter *= 2;
	  /* 
	   * See D. E. Knuth, Structured Programming with GOTO Statements,
	   * Computing Surveys (6), December 1974, for a justification
	   * of this `goto' in the `n + 1/2' loop.
	   */
	  goto retry;
     }

     return t / (double)iter;
}

#if defined(MAC) || defined(macintosh)

/* Use Macintosh Time Manager to get the time: */

#pragma only_std_keywords off  /* make sure compiler (CW) recognizes the pascal
				  keywords that are in Timer.h */

#include <Timer.h>

#pragma only_std_keywords reset

fftw_time get_Mac_microseconds(void)
{
     fftw_time t;
     UnsignedWide microsec;	/* 
				 * microsec.lo and microsec.hi are
				 * unsigned long's, and are the two parts
				 * of a 64 bit unsigned integer 
				 */

     Microseconds(&microsec);	/* get time in microseconds */

     /* store lo and hi words into our structure: */
     t.lo = microsec.lo; t.hi = microsec.hi;

     return t;
}

fftw_time fftw_time_diff(fftw_time t1, fftw_time t2)
/* This function takes the difference t1 - t2 of two 64 bit
   integers, represented by the 32 bit lo and hi words.
   if t1 < t2, returns 0. */
{
     fftw_time diff;

     if (t1.hi < t2.hi) { /* something is wrong...t1 < t2! */
	  diff.hi = diff.lo = 0;
	  return diff;
     }
     else
	  diff.hi = t1.hi - t2.hi;

     if (t1.lo < t2.lo) {
	  if (diff.hi > 0)
	       diff.hi -= 1; /* carry */
	  else { /* something is wrong...t1 < t2! */
	       diff.hi = diff.lo = 0;
	       return diff;
	  }
     }
     
     diff.lo = t1.lo - t2.lo;

     return diff;
}

#endif

#if defined __WIN32__
#include <windows.h>

static LARGE_INTEGER gFreq;
static int gHaveHiResTimer = 0;
static int gFirstTime = 1;

unsigned long GetPerfTime(void)
{
     LARGE_INTEGER lCounter;

     if (gFirstTime) {
	  gFirstTime = 0;

	  if (QueryPerformanceFrequency(&gFreq)) {
	       gHaveHiResTimer = 1;
	  }
     }
     if (gHaveHiResTimer) {
	  QueryPerformanceCounter(&lCounter);
	  return lCounter.u.LowPart;
     } else {
#if defined(__QK_USER__)
          return (unsigned long) (dclock() * 1000000.0L)
#else
	  return (unsigned long) clock();
#endif
     }
}

double GetPerfSec(double pTime)
{
     if (gHaveHiResTimer) {
	  return pTime / gFreq.u.LowPart;	/* assumes HighPart==0 */

     } else {
	  return pTime / CLOCKS_PER_SEC;
     }
}

#endif				/* __WIN32__ */

/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/*
 * twiddle.c -- compute twiddle factors
 * These are the twiddle factors for *direct* fft.  Flip sign to get
 * the inverse
 */

/* $Id: fftw.c,v 1.3 2010-01-26 14:06:59 giannozz Exp $ */
#if defined FFTW_USING_CILK
#include <cilk.h>
#include <cilk-compat.h>
#endif

#include "fftw.h"
#include <math.h>
#include <stdlib.h>

#define FFTW_K2PI 6.2831853071795864769252867665590057683943387987502

/*
 * compute the W coefficients (that is, powers of the root of 1)
 * and store them into an array.
 */
static void fftw_compute_twiddle(int n, int r, int m, FFTW_COMPLEX *W)
{
     double twoPiOverN;
     int i, j;

     twoPiOverN = FFTW_K2PI / (double) n;
     for (i = 0; i < m; ++i)
	  for (j = 1; j < r; ++j) {
	       int k = i * (r - 1) + (j - 1);
	       c_re(W[k]) = cos(twoPiOverN * (double) i * (double) j);
	       c_im(W[k]) = -sin(twoPiOverN * (double) i * (double) j);
	  }
}

/*
 * these routines implement a simple reference-count-based 
 * management of twiddle structures
 */
static fftw_twiddle *twlist = (fftw_twiddle *) 0;
int fftw_twiddle_size = 0;	/* total allocated size, for debugging */

fftw_twiddle *fftw_create_twiddle(int n, int r, int m)
{
     fftw_twiddle *tw;
     FFTW_COMPLEX *W;

     /* lookup for this n in the twiddle list */
     for (tw = twlist; tw; tw = tw->next)
	  if (tw->n == n && tw->r == r && tw->m == m) {
	       ++tw->refcnt;
	       return tw;
	  }
     /* not found --- allocate a new struct twiddle */
     tw = (fftw_twiddle *) fftw_malloc(sizeof(fftw_twiddle));
     W = (FFTW_COMPLEX *) fftw_malloc(m * (r - 1) * sizeof(FFTW_COMPLEX));
     fftw_twiddle_size += n;

     tw->n = n;
     tw->r = r;
     tw->m = m;
     tw->twarray = W;
     tw->refcnt = 1;
     fftw_compute_twiddle(n, r, m, W);

     /* enqueue the new struct */
     tw->next = twlist;
     twlist = tw;

     return tw;
}

void fftw_destroy_twiddle(fftw_twiddle * tw)
{
     fftw_twiddle **p;
     --tw->refcnt;

     if (tw->refcnt == 0) {
	  /* remove from the list of known twiddle factors */
	  for (p = &twlist; p; p = &((*p)->next))
	       if (*p == tw) {
		    *p = tw->next;
		    fftw_twiddle_size -= tw->n;
		    fftw_free(tw->twarray);
		    fftw_free(tw);
		    return;
	       }
	  fftw_die("BUG in fftw_destroy_twiddle\n");
     }
}
/*
 * Copyright (c) 1997 Massachusetts Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to use, copy, modify, and distribute the Software without
 * restriction, provided the Software, including any modified copies made
 * under this license, is not distributed for a fee, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE MASSACHUSETTS INSTITUTE OF TECHNOLOGY BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 * Except as contained in this notice, the name of the Massachusetts
 * Institute of Technology shall not be used in advertising or otherwise
 * to promote the sale, use or other dealings in this Software without
 * prior written authorization from the Massachusetts Institute of
 * Technology.
 *  
 */

/*
 * wisdom.c -- manage the wisdom
 */

#include "fftw.h"
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

struct wisdom {
     int n;
     int flags;
     fftw_direction dir;
     enum fftw_node_type type;	/* this is the wisdom */
     int signature;		/* this is the wisdom */
     struct wisdom *next;
};

/* list of wisdom */
static struct wisdom *wisdom_list = (struct wisdom *) 0;

int fftw_wisdom_lookup(int n, int flags, fftw_direction dir,
		     enum fftw_node_type *type,
		     int *signature, int replacep)
{
     struct wisdom *p;

     if (!(flags & FFTW_USE_WISDOM))
	  return 0;		/* simply ignore if wisdom is disabled */

     flags |= FFTW_MEASURE; /* always use (only) wisdom from measurements */

     for (p = wisdom_list; p; p = p->next) {
	  if (p->n == n && p->flags == flags && p->dir == dir) {
	       /* found wisdom */
	       if (replacep) {
		    /* replace old wisdom with new */
		    p->type = *type;
		    p->signature = *signature;
	       } else {
		    *type = p->type;
		    *signature = p->signature;
	       }
	       return 1;
	  }
     }

     return 0;
}

void fftw_wisdom_add(int n, int flags, fftw_direction dir,
		   enum fftw_node_type type,
		   int signature)
{
     struct wisdom *p;

     if (!(flags & FFTW_USE_WISDOM))
	  return;		/* simply ignore if wisdom is disabled */

     if (!(flags & FFTW_MEASURE))
	  return;  /* only measurements produce wisdom */

     if (fftw_wisdom_lookup(n, flags, dir, &type, &signature, 1))
	  return;		/* wisdom overwrote old wisdom */

     p = (struct wisdom *) fftw_malloc(sizeof(struct wisdom));

     p->n = n;
     p->flags = flags;
     p->dir = dir;
     p->type = type;
     p->signature = signature;

     /* remember this wisdom */
     p->next = wisdom_list;
     wisdom_list = p;
}

void fftw_forget_wisdom(void)
{
     while (wisdom_list) {
	  struct wisdom *p;

	  p = wisdom_list;
	  wisdom_list = wisdom_list->next;
	  fftw_free(p);
     }
}

/*
 * user-visible routines, to convert wisdom into strings etc.
 */
#define WISDOM_FORMAT_VERSION "FFTW-1.2"

static void (*emit)(char c, void *data);

static void emit_string(char *s, void *data)
{
     while (*s) 
	  emit(*s++, data);
}

static void emit_int(int n, void *data)
{
     char buf[128];

     sprintf(buf, "%d", n);
     emit_string(buf, data);
}

/* dump wisdom in lisp-like format */
void fftw_export_wisdom(void (*emitter)(char c, void *), void *data)
{
     struct wisdom *p;

     /* install the output handler */
     emit = emitter;

     emit('(',data);
     emit_string(WISDOM_FORMAT_VERSION,data);

     for (p = wisdom_list; p; p = p->next) {
	  emit(' ',data);	/* separator to make the output nicer */
	  emit('(',data);
	  emit_int((int) p->n, data);
	  emit(' ',data);
	  emit_int((int) p->flags, data);
	  emit(' ',data);
	  emit_int((int) p->dir, data);
	  emit(' ',data);
	  emit_int((int) p->type, data);
	  emit(' ',data);
	  emit_int((int) p->signature, data);
	  emit(')',data);
     }
     emit(')',data);
}

/* input part */
static int next_char;
static int (*get_input)(void *data);
static fftw_status input_error;

static void read_char(void *data)
{
     next_char = get_input(data);
     if (next_char == 0 ||
	 next_char == EOF)
	  input_error = FFTW_FAILURE;
}

/* skip blanks, newlines, tabs, etc */
static void eat_blanks(void *data)
{
     while (isspace(next_char))
	  read_char(data);
}

static int read_int(void *data)
{
     int sign = 1;
     int n = 0;

     eat_blanks(data);
     if (next_char == '-') {
	  sign = -1;
	  read_char(data);
	  eat_blanks(data);
     }

     if (!isdigit(next_char)) {
	  /* error, no digit */
	  input_error = FFTW_FAILURE;
	  return 0;
     }

     while (isdigit(next_char)) {
	  n = n * 10 + (next_char - '0');
	  read_char(data);
     }

     return sign * n;
}

#define EXPECT(c)                     \
{				      \
     eat_blanks(data);		      \
     if (input_error == FFTW_FAILURE || \
         next_char != c)	      \
	  return FFTW_FAILURE;	      \
     read_char(data);		      \
}
				      
#define EXPECT_INT(n)                                 \
{				                      \
     n = read_int(data);	                      \
     if (input_error == FFTW_FAILURE)                 \
	  return FFTW_FAILURE;		              \
}				      
				      
#define EXPECT_STRING(s)             \
{                                    \
     char *s1 = s;		     \
     while (*s1) {		     \
	  EXPECT(*s1);		     \
	  ++s1;			     \
     }				     \
}       			      
                                      
fftw_status fftw_import_wisdom(int (*g)(void *), void *data)
{
     int n;
     int flags;
     fftw_direction dir;
     enum fftw_node_type type;
     int signature;

     get_input = g;
     input_error = FFTW_SUCCESS;

     read_char(data);

     eat_blanks(data);
     EXPECT('(');
     eat_blanks(data);
     EXPECT_STRING(WISDOM_FORMAT_VERSION);
     eat_blanks(data);

     while (next_char != ')') {
	  EXPECT('(');
	  EXPECT_INT(n);
	  EXPECT_INT(flags);
	  EXPECT_INT(dir);
	  EXPECT_INT(type);
	  EXPECT_INT(signature);
	  eat_blanks(data);
	  EXPECT(')');

	  /* the wisdom has been read properly. Add it */
	  fftw_wisdom_add(n, flags, dir, type, signature);

	  /* prepare for next morsel of wisdom */
	  eat_blanks(data);
     }

     return FFTW_SUCCESS;
}
